Threads in B3D - Mit FastPointer
Übersicht

![]() |
PummelieBetreff: Threads in B3D - Mit FastPointer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da ich das ganze als Mittel der Mittel für Multicore Nutzung sehe, dachte ich, ich mach mal ein kleines Tut, damit sich mehr Leute damit anfreunden.
Als erstes braucht ihr die FastPointer Lib hier: Download. Einen Thread erstellen: Und schon kanns los gehen. Hier erstmal unsere Function BlitzBasic: [AUSKLAPPEN] Function Thread1(var%=0) Um einen Thread zu erstellen, brauchen wir erst einmal einen Pointer auf eine Funktion, die der Thread mal werden soll. Diese bekommen wir so: BlitzBasic: [AUSKLAPPEN] Local pointer1 = FunctionPointer() Thread1() ist die Funktion, die wir später als Thread aufrufen wollen. Diese überspringen wir mit Goto, statt sie aus zu führen. Die Funktion "FunctionPointer()" gibt den Pointer in die Variable pointer1. Nun haben wir schonmal den benötigten Pointer auf unsere Funktion. Den Thread starten wir dann mit: BlitzBasic: [AUSKLAPPEN] Local Thread1 = CreateThread(Pointer1, 0) Jetzt könne wir ein Programm mit dem Thread, der diese Function darstellt bauen. BlitzBasic: [AUSKLAPPEN] Global fps Zuätzliche Info's über die Verwendung: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Feedback erwünscht ![]() |
||
It's done when it's done. |
![]() |
FireballFlame |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ging das nicht nur bis Windows XP? | ||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
![]() |
Pummelie |
![]() Antworten mit Zitat ![]() |
---|---|---|
Rennt ab Win 2000 bis Win 7... | ||
It's done when it's done. |
![]() |
tft |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
dem muss ich leider widersprechen. Es funktioniert nicht auf allen Rechnern. Wieso ist nicht genau bekannt. Gruss TFT |
||
TFT
https://www.sourcemagic.ch Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!! |
![]() |
Dottakopf |
![]() Antworten mit Zitat ![]() |
---|---|---|
mir macht diese aussage irgendwie angst ![]() Zitat: Timer verursachen Mav (verwende Delay)
|
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
![]() |
Pummelie |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wieso? | ||
It's done when it's done. |
![]() |
juse4pro |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wieso das verängstigend sein sollte verstehe ich auch nicht.
Timer haben eine gemeinsame globale Variable (intern). Wenn mehrere Timer auf diese zeitgleich zugreifen machts BÄÄNG! Delay macht dies nicht... ![]() |
||
Portfolio |LinkedIn |XING |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
wie sieht's aus mitschreiben/lesen gleichzeitig. dürfte auch nicht gehen oder? | ||
![]() |
Pummelie |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das geleichzeite Schreiben verursacht einen MAV...
Lesen geht aber... |
||
It's done when it's done. |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
ja ich mein einer liest einer schreibt | ||
![]() |
Pummelie |
![]() Antworten mit Zitat ![]() |
---|---|---|
Achso... damit hatte ichbisher noch keine Probleme.. kann aber auch Glück sein...
Sollte eigentlich gehen... |
||
It's done when it's done. |
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Lesen, während etwas geschrieben wird, ist auch problematisch. Welcher Wert soll denn dann ausgelesen werden? Der neue oder der alte Wert?
Das muss man daher auch sichern. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
![]() |
Pummelie |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also.. ich hab das jetz mal intensiv getestet...
Es besteht 2 Möglichkeiten die auftreten könne: 1. MAV 2. es wird immer 0 zurückgeliefert... Eine Lösung wäre es vlt. den Threat in dieser Zeit an zu halten... |
||
It's done when it's done. |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
die frage wäre halt wie. muss man dazu mutexe setzen oder sowas oder kann man das irgendwie anders lösen | ||
![]() |
Pummelie |
![]() Antworten mit Zitat ![]() |
---|---|---|
FastPointer.decls hat Folgendes geschrieben: PauseThread% (Thread%)
ResumeThread% (Thread%) Damit könnte es gehen ![]() |
||
It's done when it's done. |
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
also soll ich wenn ich auf ne variable zugreife einfach alle threads anhalten die auf sie zugreifen könnten. is doch schon n bissl zweckentfremdet oder?
Alternative wäre halt wirklich Mutexe, wie in https://www.blitzforum.de/foru...hp?t=33059 Zitat: .lib "Kernel32.dll"
CreateMutex%( lpMutexAttributes*, bInitialOwner%, lpName$ ) : "CreateMutexA" OpenMutex%( dwDesiredAccess%, bInheritHandle%, lpName$ ) : "OpenMutexA" ReleaseMutex%( hMutex% ) : "ReleaseMutex" BlitzBasic: [AUSKLAPPEN] ;Constants BlitzBasic: [AUSKLAPPEN] Global GemeinsameRessource wenn jetzt der Thread öfter gestartet wird und 2 Threads die GemeinsameRessource nutzen wollen, wartet immer ein Thread bis das Mutex wieder frei ist. |
||
![]() |
count-doku |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
schöne Lib, versuche gerade damit einen Dateiserver zu schreiben. Und wollte nur sagen, dass bei mir (WinXP) auch Timer ohne Probleme gehen. Beispiel: BlitzBasic: [AUSKLAPPEN] Global fps,fps1,fps2,timer=CreateTimer(30),timer1=CreateTimer(45),timer2=CreateTimer(60) Count-Doku |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group