Threading schaltet Debuglog zum nicht-dasein um?
Übersicht

![]() |
Xaymarehemals "Cgamer"Betreff: Threading schaltet Debuglog zum nicht-dasein um? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich erarbeite gerade mit Threads ein kleines Framework. Leider scheint Debuglog komplett außer Kraft zu sein. Warum?
Dazu kommt noch das das Programm stoppt. Ich rufe das ungefähr so auf: runGame ->OnInit ->Loop ->->OnDraw & OnUpdate ->OnDeinit Nur erreicht er "Loop" nie. Es hält einfach an, als wären die Threads tot. Woran liegt das? zpfGame.bmx BlitzMax: [AUSKLAPPEN] Type zpfGame zpfGameText.bmx BlitzMax: [AUSKLAPPEN] 'Include Base Game |
||
Warbseite |
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Als Erstes ist mir ein enormer Leistungsverbrauch aufgefallen:
BlitzMax: [AUSKLAPPEN] While (MilliSecs()-lastDraw) < zGame._DrawWait;Wend Vielleicht hat es damit etwas zu tun. Was wird eigentlich hier abgesichert? Eine lokale Variable? ![]() BlitzMax: [AUSKLAPPEN] If zGame._PauseMutex.Lock() 'Check for Pause Nun zum eigentlichen Problem: Debuglog scheint sogar threadsicher zu sein. BlitzMax: [AUSKLAPPEN] SuperStrict -> Der Fehler liegt woanders. Teste deinen Code mal mit DebugStop durch! Ich habe es gemacht. Mir ist aufgefallen, dass du "If zGame._PauseMutex.Lock()" geschrieben hast. Die Lock-Methode gibt aber keinen Wert zurück, da sie immer funktioniert! (Nur die TryLock-Methode gibt zurück, ob der Zugriff möglich ist.) mfG mpmxyz PS: Grafikoperationen sollten alle im gleichen Thread stattfinden. Frage mich aber nicht mehr nach dem Grund. Events mögen es auch nicht, wenn sie außerhalb des Mainthreads benutzt werden. |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
![]() |
Lord Stweccys |
![]() Antworten mit Zitat ![]() |
---|---|---|
mpmxyz hat Folgendes geschrieben: Grafikoperationen sollten alle im gleichen Thread stattfinden.
Ich habe die Erfahrung gemacht, dass Grafikoperationen generell nur im Hauptprogramm funktionieren. Sobald, ich alles in einen Thread ausgelagert hab, blieb das Bild schwarz... |
||
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe das Beispielprogramm von Xaymar hier so geändert, dass auch im Zeichenthread gezeichnet werden konnte. (->alles, was mit Grafik zu tun hat, in den entsprechenden Thread)
Die Benutzereingaben funktionierten aber (noch) nicht. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
![]() |
Xaymarehemals "Cgamer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
mpm:
1-Timer gehen ja nicht, was soll ich da sonst nehmen? Delay? 2-Da wird nichts abgesichert, da stelle ich nur die Threads mit auf Pause, da Blitzmax ja kein PauseThread besitzt. Oder? 3-Warum gibt die Lock() methode nichts zurück? Ist das nicht i.e. dieselbe funktion wie LockMutex() in der WinAPI? 4-Ich werde es mal mit DebugStop durchgehen... Aber wird wohl bei Grafikausgabe daraus hinauslaufen eine WorkerQueue zu basteln. Das wird ein Spaß... PS: Ich denke das läuft auf die Struktur hinaus wie BlitzMax aufgebaut ist. Da threading ja später hinzugekommen ist, muss man halt sich selber sogenannte WorkerQueues dafür erstellen, die halt die Aufgaben erledigen und ggf Threads usw wecken und töten. |
||
Warbseite |
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
1. "Delay 1" würde den Computer schon gut entlasten.
2. Du möchtest damit nur den Thread pausieren? 3. BlitzMax: [AUSKLAPPEN] Method Lock() mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group