Threads in B3D - Mit FastPointer
Übersicht BlitzBasic FAQ und Tutorials
PummelieBetreff: Threads in B3D - Mit FastPointer |
So, Nov 28, 2010 1:13 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: Keine Zeichenbefehle, oder alle Zeichenbefehle. In 3D können Objekte modifiziert werden Timer verursachen Mav (verwende Delay) Mehrere Schreibzugriffe auf eine Variable sind nicht möglich - am besten ihr verwendet globale zum sichern, das vom Threat kein Schreibzugriff statt findet, wenn ihr das nicht wollt Kein Return, oder im Thread festgeletes Ende Nicht nur End verwenden, vorher den Thread schließen Kein Graphics ; RuntimeError oder sonstige Befehle, die ein Fenster aufrufen im Thread In Maßen verwenden. Mehrer Threads schlagen schnell auf den Ram... Feedback erwünscht |
||
It's done when it's done. |
FireballFlame |
So, Nov 28, 2010 4:31 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 |
So, Nov 28, 2010 4:32 Antworten mit Zitat |
|
---|---|---|
Rennt ab Win 2000 bis Win 7... | ||
It's done when it's done. |
tft |
So, Nov 28, 2010 11:15 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 |
Di, Nov 30, 2010 13:30 Antworten mit Zitat |
|
---|---|---|
mir macht diese aussage irgendwie angst
Zitat: Timer verursachen Mav (verwende Delay)
|
||
Rechtschreibfehler gelten der allgemeinen Belustigung! |
Pummelie |
Di, Nov 30, 2010 13:31 Antworten mit Zitat |
|
---|---|---|
Wieso? | ||
It's done when it's done. |
juse4pro |
Do, Dez 30, 2010 22:59 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 |
Fr, Dez 31, 2010 15:21 Antworten mit Zitat |
|
---|---|---|
wie sieht's aus mitschreiben/lesen gleichzeitig. dürfte auch nicht gehen oder? | ||
Pummelie |
Fr, Dez 31, 2010 16:33 Antworten mit Zitat |
|
---|---|---|
Das geleichzeite Schreiben verursacht einen MAV...
Lesen geht aber... |
||
It's done when it's done. |
Silver_Knee |
Fr, Dez 31, 2010 17:58 Antworten mit Zitat |
|
---|---|---|
ja ich mein einer liest einer schreibt | ||
Pummelie |
Fr, Dez 31, 2010 19:35 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 |
Fr, Dez 31, 2010 19:57 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 |
Fr, Dez 31, 2010 20:05 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 |
Sa, Jan 01, 2011 5:41 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 |
Sa, Jan 01, 2011 6:10 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 |
Sa, Jan 01, 2011 15:55 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 |
So, Mai 15, 2011 16:13 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 BlitzBasic FAQ und Tutorials
Powered by phpBB © 2001 - 2006, phpBB Group