Threads - CreateThread(...)
-
Habe hier "kleine" Probleme mit den Variablen...
#include "user.hpp" void ThreadCall( user *LPclass ) { LPclass->recvThread(); } int main() { user *usr; usr = new user(); Sleep( 1500 ); system( "CLS" ); ThreadCall( usr ); usr->userdata(); usr->bindPort(); if( usr->isHost() ) { usr->listenAndAccept(); } usr->connectToPort(); usr->changeMutex( CreateThread( NULL , 0 , ?1 , ?2 , 0 , NULL ) ); }Was muss ich als Parameter bei den Fragezeichen eingeben ?
?1 sollte glaube ich ein Funktionszeiger sein so à la
void (*PF)( *user LPclass ) funktioniert aber nicht.
?2 müsste ein LPVOID sein, aber wie setze ich das um, dass ich da meinen usr-Pointer reinpacke?
Wenn jemand mehr Infos braucht sagenMfG RikuXan
-
Das erste ist eine Funktionszeiger auf die eigentliche Threadfunktion und das zweite ist ein Zeiger auf Daten, welche der Threadfunktion mit übergeben werden. Dieser Paramter kann NULL sein.
-
Jo was reingehört ist klar, aber wie realisiere ich das?
Das mit dem Funktionszeiger, was stimmt an meinem nicht, wo ist da der Fehler? ._.
Und wie packe ich den Pointer aufs Objekt in den Parameter-Parameter?MfG RikuXan
-
CreateThread( NULL , 0 , ThreadCall , &usr , 0 , NULL )
-
Am einfachsten ist es immer es so zu machen wie es in der Doku steht.
http://msdn.microsoft.com/en-us/library/ms682453(VS.85).aspx
http://msdn.microsoft.com/en-us/library/ms686736(VS.85).aspxSorge dafür, das Deine ThreadProc auch die richtige Signatur hat!
Ansonsten verwendet man meistens nicht CreateThread:
http://blog.m-ri.de/index.php/2007/11/28/createthread-und-die-crt/
http://blog.m-ri.de/index.php/2008/02/28/afxbeginthread-versus-_beginthreadex/