000
23.04.2006, 20:34 Uhr
~Robin
Gast
|
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:
C++: |
//... 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:
C++: |
class newclientdata { public: commobj *MyComm; SOCKET nn; player * player_object; newclientdata(){}; };
|
Der Arbeiterthread:
C++: |
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 <<"playerthread recieved message:"<<msg.message<<endl; cout <<MsgReturn; } };
|
Das führt (leider) zur folgenden Bildschirmausgabe:
Code: |
Main:ncd:1860 Clientthread gestartet... Playerthread:4080912
|
Es sollte eigentlich bei beiden der gleiche Socket ausgegeben werden... Da läuft doch irgendwas grundsätzlich schief - nur was?
Weiss jemand Rat? Gruss R |