[WinAPI] Wielowątkowość w klasach
Ostatnio zmodyfikowano 2009-10-07 17:22
jimmye Temat założony przez niniejszego użytkownika |
[WinAPI] Wielowątkowość w klasach » 2009-10-06 23:18:32 Mam taki problem z tworzeniem wątków. Oto deklaracja funkcji, która ma się wykonywać: DWORD WINAPI Engine::HandleConnection( LPVOID ) { }
Tak tworzę wątek: this->Tconn_handler = CreateThread( NULL, 0, this->HandleConnection, NULL, 0, NULL );
Jest jakaś niezgodność z deklaracją funkcji, taką mam treść błędu: error: argument of type `DWORD (Engine::)(void*)' does not match `DWORD (*)(void*)'| [code]
|
|
DejaVu |
» 2009-10-07 14:33:13 Ja bym zrobił tak: class Klasa { private: static DWORD WINAPI runThread( const Klasa * pKlasa ); public: void run(); };
DWORD WINAPI Klasa::runThread( const Klasa * pKlasa ) { }
void Klasa::run() { this->Tconn_handler = CreateThread( NULL, 0, runThread, this, 0, NULL ); }
Są szanse, że nie będzie błędu kompilacji (jednak nie jestem pewien bo nie testowałem ;p). |
|
jimmye Temat założony przez niniejszego użytkownika |
» 2009-10-07 19:23:00 Oj chyba tak też nie da rady :P engine.cpp|70|error: invalid conversion from `DWORD (*)(Engine*)' to `DWORD (*)(void*)'| engine.cpp|70|error: initializing argument 3 of `void* CreateThread(_SECURITY_ATTRIBUTES*, DWORD, DWORD (*)(void*), void*, DWORD, DWORD*)'|
Próbowałem też na inne sposoby ale nic z tego.. |
|
DejaVu |
» 2009-10-07 20:02:56 #include <windows.h> class Klasa { private: static DWORD WINAPI runThread( const Klasa * pKlasa ); public: void run(); };
DWORD WINAPI Klasa::runThread( const Klasa * pKlasa ) { }
void Klasa::run() { CreateThread( NULL, 0, reinterpret_cast < LPTHREAD_START_ROUTINE >( runThread ), this, 0, NULL ); }
int main() { return 0; }
|
|
jimmye Temat założony przez niniejszego użytkownika |
» 2009-10-08 13:54:04 Dzięki teraz działa :P Gdybym ja tak wszystkie błędy rozumiał.. |
|
manfred |
» 2009-10-07 17:22:30 Będzie - DWORD WINAPI(const Klasa*) to nie DWORD WINAPI(void*). Konieczna będzie zmiana typu argumentu na void* i rzutowanie w środku albo rzutowanie przy CreateThread. |
|
« 1 » |