Übergabe eines Pointers bei Createthread klappt nicht.
-
Hallo,
Ich möchte einen Thread erzeugen und diesem einen Zeiger auf ein (temporäres) Objekt übergeben, damit der Thread Daten zum arbeiten hat...
Leider läuft das irgendwie schief...Hier der aufruf in der Main:
//... newclientdata *ncd=new newclientdata; ncd->nn=tempsock; ncd->MyComm=&MyComm; ncd->player_object=p; cout<<"Main:ncd:"<<ncd->nn<<endl; threads.push_back(CreateThread(NULL, 0, clientthread, &ncd, 0, &tempid));Die Daten, die ich übergeben möchte:
class newclientdata { public: commobj *MyComm; SOCKET nn; player * player_object; newclientdata(){}; };Der Arbeiterthread:
DWORD WINAPI clientthread(PVOID pParam) { MSG msg; cout<<"Clientthread gestartet..."<<endl; newclientdata * MyData; MyData=(newclientdata*)pParam; cout << "Clientthread:"<<MyData->nn<<endl; while (true) { BOOL MsgReturn = GetMessage ( &msg , NULL , 0, 0); cout <<"clientthread recieved message:"<<msg.message<<endl; cout <<MsgReturn; } };Das führt (leider) zur folgenden Bildschirmausgabe:
Main:ncd:1860 Clientthread gestartet... Clientthread:4080912Es sollte eigentlich bei beiden der gleiche Socket ausgegeben werden...
Da mache ich doch sicher irgendwas grundsätzlich falsch - nur was?Weiss jemand Rat?
Gruss
R
-
ncd in Main ist doch schon ein Pointer, du übergibst in CreateThread mit &ncd die Addresse des Pointers. Probier mal
CreateThread(NULL, 0, clientthread, ncd, 0, &tempid)
-
uhh - Richtig, Danke!