Thread + Timer = Crash?
Übersicht

![]() |
Der EisvogelBetreff: Thread + Timer = Crash? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo
Ich habe heute mit Threads angefangen. Nach langem Verzweifeln und keineAntwortimChatbekomm hab ich bemerkt, das es mit den Timern zusammen hängt, dass nix funktioniert. Folgender Code sollte doch eigentlich problemlos funktionieren: BlitzMax: [AUSKLAPPEN] SuperStrict Doch leider wird bei mir 2 mal Thread und ein mal Main ausgegeben, danach passiert nix mehr. Warum? Wenn ich den Timer im Thread gegen ein Delay austausche geht es perfekt. Bin ratlos. Ein Bug in BM oder ein Fehler von mir? MfG Der Eisvogel |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist einer der Gründe, warum Threading in BM noch nicht wirklich genutzt wird. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
TTimer ist nicht threadsicher:
BlitzMax: [AUSKLAPPEN] Method Wait() mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie kann ich mir dann so einen Timer selber schreiben? | ||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es gibt zwei Möglichkeiten.
Möglichkeit A: einen Timer aus "Millisecs" und "Delay" basteln Möglichkeit B: Copy&Paste aus brl.Timer pro Timer einen "Mutex" erstellen an zwei Stellen - den Methoden "Wait" und "Fire" - jeweils die richtigen Mutex-Methoden anwenden. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
OK, danke. | ||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sorry für Doppelpost, aber ich habe jetzt ein Problem mit meinem selbst geschriebene Timer:
BlitzMax: [AUSKLAPPEN] Type TTimerEx Sobald ich da nun Wait() aufrufe, kommt bei Ausführen des Programm unabhängig von BM die Meldung: Windows exception Windows acces violation Das Programm selbst läuft weiter, aber sobald ich bei der Meldung auf OK klicke beendet es sich. Was mache ich falsch? Sind Types selber auch nicht Threadsafe? EDIT: oO, da in der Method, ist das da so wie beim Timer von BM auch ein ungesicherter Speicherzugriff? Liegt das daran? Wenn dieser Doppelpost nicht berechtigt ist, dann bitte löschen. MfG Der Eisvogel |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wird das Field "lastcall" auch überschrieben?
Wenn ja, muss dieses Überschreiben gesichert werden. (Schreibzugriffe auf mehrfach genutzte Bereiche sind, wie schon einmal gesagt, böse!) mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Oops, hab ich vergessen jetzt hab ich es drinnen, aber der Fehler bleibt unverändert.
EDIT: Wie sichert man einen solchen Zugriff? |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du erstellst für jeden Timer einen Mutex mit "CreateMutex".
Die kritische Wertzuweisung wird von "LockMutex" und "UnlockMutex" umschlossen. Schaue dir am Besten die Beispiele in der Originalhilfe an. (Hot Docs hat bei mir keine Referenz für das Threadmodul erstellt.) mfG mpmxyz Edit: Da scheint der Wurm drin zu sein. (oder eher ein Käfer...) Das Aufrufen einer einzelnen Methode ohne Inhalt sorgt schon für Probleme... |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jetzt siehts so aus:
BlitzMax: [AUSKLAPPEN] Type TTimerEx Aber es kommt immernoch dieser Error. |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
*husthust*
LockMutex vor CreateMutex? kein Return bei "Create"? "Traue keinem Code!" ![]() Dann hätte ich das zweite schneller gemerkt... Teste die Sachen erst einmal im Main-Thread! mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Oh,sry. Jetzt gehts danke. | ||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: (Hot Docs hat bei mir keine Referenz für das Threadmodul erstellt.)
Such mal hier im Forum, ich hatte eine HotDocsversion eingestellt die mit dem Threaded-Mode klar kommt. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group