#include <process.h>
:
HANDLE g_hEvent[3];
void ThreadFunA( LPVOID lpParam)
{
for( int i = 0; i< 100; i++ )
{
}
SetEvent( g_hEvent[0] );
return;
}
void ThreadFunB( LPVOID lpParam)
{
for( int i = 0; i< 100; i++ )
{
}
SetEvent( g_hEvent[1] );
return;
}
void ThreadFunC( LPVOID lpParam)
{
for( int i = 0; i< 100; i++ )
{
}
SetEvent( g_hEvent[2] );
return;
}
int _tmain(int argc, _TCHAR* argv[])
{
g_hEvent[0] = CreateEvent( NULL, TRUE, FALSE, NULL );
g_hEvent[1] = CreateEvent( NULL, TRUE, FALSE, NULL );
g_hEvent[2] = CreateEvent( NULL, TRUE, FALSE, NULL );
ResetEvent( g_hEvent[0] );
ResetEvent( g_hEvent[1] );
ResetEvent( g_hEvent[2] );
HANDLE handle1 = (HANDLE) _beginthread( ThreadFunA, 0, NULL );
HANDLE handle2 = (HANDLE) _beginthread( ThreadFunB, 0, NULL );
HANDLE handle3 = (HANDLE) _beginthread( ThreadFunC, 0, NULL );
DWORD dwResult = WaitForMultipleObjects( 3, g_hEvent, true, INFINITE );
switch( dwResult )
{
case WAIT_OBJECT_0:
break;
case WAIT_TIMEOUT:
break;
case WAIT_FAILED:
break;
}
getchar();
return 0;
}
to understand the code better google for the topic "Thread synchronization in c++"