Thread unter XP->TRUE unter Win98->FALSE
-
hi,
Folgendes Problem, unter XP geht die Übergabe eines Globalen Parameters an einen Thread. Unter Win98 reagiert das Programm auf das setzen eines Globalen Parameters überhaupt nicht :(.
Folgender Pseudo-Code sollte es verdeutlichen:
int gloabal=0; int WndProc() { //.... WM_Button1: _beginthread(Thread,......); return 0; WM_Button2: global = 1; return 0; } VOID Thread(....) { while(1) { if(gloabel) break; //Hier werden eine Menge Operationen durchgeführt ohne Pause. }//while _endthread(); }Wenn ich da Programm unter XP starte und auf Button 2 klicke wird dich Schleife durchbrochen. Unter Win98 passiert garnichts, sogar wenn ich mir die Variable ausgeben lasse steht im Thread eine 0 und in der WndProc eine 1, nach drücke des Buttons. Das versteh ich nicht, das versteh ich einfach nicht

MfG Unwissender

-
Ich versteh zwar nicht, wieso das unter XP und W98 anders sein sollte, aber du musst die Variable auf jeden Fall volatile machen.
-
Für was genau ist diese volatitle gut? Das hab ich noch nie bei Threads genutzt
Könnte es daran liegen? Ich kann es leider im Moment nicht unter Win98 testen. Unter XP geht es, aber da ging es auch vorher. Warum, weiß ich auch nicht und versteh ich auch nicht 
-
Das sagt dem Compiler, dass sich der Wert ändern kann, auch ohne dass der Compiler was davon weiß. Dadurch muss er die Variable jedesmal neu aus dem Speicher lesen, wenn darauf zugegriffen wird.
-
Guten Morgen,
Ich hab zwar die Variable nun auf "volatitle" gesetzt, aber das hat leider auch nichts gebracht :(. Unter XP geht es; unter Win98 keine Auswirkung. Könnte es dran liegen das Win98 überfordert ist
. Da im dem Thread eine Menge Operationen ohne Pause laufen?MfG Unwissender

-
Versuchs mal mit einer Bool variable. Kann man an den Thread Messages schicken?
Wenn ja, bräuchtest du keinen global und hättests einfacher.
-
Es ist im Programm auch eine BOOL'sche Variable.
Und nein, man kann keine Messages an den Thread schicken, aber das werd ich wohl umrüsten müssen
MfG Unwissender
