Fehler bei Parameterübergabe an Thread
-
Hallo,
ich habe mal wieder ein Problem.
Ich habe einen neuen Datentyp definiert, mit dem ich die Parameter an meinen Thread übergeben will.//Struct für die Parameter, die an den KI-Thread übergeben werden typedef struct{ HWND hwnd; int iFeldZust[ANZSPALTEN][MAXSTEINE]; }PARAMS, *PPARAMS;Vor der Übergabe an den Thread weise ich den Variablen ihre werte zu und gebe das Feld aus
params.hwnd=hwnd; for(int i=0; i<ANZSPALTEN; i++) { for(int j=0; j<MAXSTEINE; j++) { params.iFeldZust[i][j]=iFeldZust[i][j]; } } for(int i=0; i<ANZSPALTEN; i++) { std::cout << endl; for(int j=0; j<MAXSTEINE; j++) { std::cout << params.iFeldZust[i][j]; } } std::cout << endl; bKIAktiv=true; _beginthread(Thread,0,¶ms);Im gestarteten Thread gebe ich das Feld nochmal aus, nur ist dabei das Feld fehlerhaft.
KI ki; PPARAMS pparams = (PPARAMS) pvoid; for(int i=0; i<ANZSPALTEN; i++) { std::cout << endl; for(int j=0; j<MAXSTEINE; j++) { std::cout << pparams->iFeldZust[i][j]; } }Die Ausgabe sieht so aus
000000 000000 000000 100000 000000 000000 000000 000000 000000 000000 100000 000000 000000 042037960000Wenn ihr noch Informationen braucht, einfach Fragen.
Schon mal danke für die Hilfe
Held
-
sowas wie 'std::cout' ist nicht von natur aus threadingtauglich, vielleicht liegt's daran?
macht du die zweiter ausgabe erst, wenn die erste beendet ist, oder läuft das parallel?
-
wo legst du params an? auf dem stack oder heap? wenn auf dem stack, kann es sein, dass der pointer im thread auf was ungültiges zeigt.
-
Ich hab params jetzt auf den Heap und es funktioniert einwandfrei.
Danke
Held