[WinAPI] Jak używać eventów?
Ostatnio zmodyfikowano 2014-08-16 19:52
Vister26 Temat założony przez niniejszego użytkownika |
[WinAPI] Jak używać eventów? » 2014-08-16 17:37:00 Przeczytałem Wątki (do rozdziału "zdarzenia" włącznie) i mam problem ze zdarzeniami. Oto kod: #include <windows.h> #include <process.h> #include <iostream>
void __cdecl mainThreadProc( void * Args );
HANDLE hIsWypisane;
using std::cout; using std::endl;
int main() { HANDLE hMainThread =( HANDLE ) _beginthread( mainThreadProc, 0, NULL ); hIsWypisane = CreateEvent( NULL, TRUE, FALSE, NULL ); WaitForSingleObject( hMainThread, 1000 ); cout << " tutaj1 " << endl; }
void __cdecl mainThreadProc( void * Args ) { for( int i = 0; i < 3; i++ ) cout << " mainThread " << endl; SetEvent( hIsWypisane ); for( int i = 0; i < 3; i++ ) cout << " mainThread2 " << endl; _endthread(); }
Na wyjściu wyświetla to: mainThread mainThread mainThread mainThread2 mainThread2 mainThread2 tutaj1
Chciałbym, żeby było tak: mainThread mainThread mainThread tutaj1 mainThread2 mainThread2 mainThread2
Kombinuję od dwóch godzin, ale czuję, że nadal nie rozumiem jak to działa. Co muszę zmienić? |
|
Vister26 Temat założony przez niniejszego użytkownika |
» 2014-08-16 19:52:28 Problem rozwiązany. Błąd był w tej linii: WaitForSingleObject( hMainThread, 1000 );
Ta funkcja powinna czekać na event, więc należy przekazać jej HANDLE hEvent zamiast HANDLE hThread: WaitForSingleObject( hIsWpisane, 1000 );
Tutaj była odpowiedź: Synchronizacja Wątków |
|
« 1 » |