1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| #include <Windows.h>
HANDLE hevent;
int nb = 0;
int NBMESSAGES = 7000;
DWORD WINAPI SenderThread( void * idMainThread )
{
DWORD id = (DWORD)idMainThread;
for ( int i = 0; i < NBMESSAGES; ++i )
PostThreadMessage( id, WM_USER+100, 0, 0 );
return 0;
}
DWORD WINAPI MainThread( void * )
{
MSG msg;
PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE );
SetEvent( hevent );
while ( GetMessage( &msg, NULL, 0, 0 ) )
{
if ( msg.message == WM_USER+100 )
++nb;
}
return 0;
}
int WINAPI WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow )
{
hevent = CreateEvent( NULL, TRUE, FALSE, NULL );
DWORD id, id1, id2;
HANDLE th = CreateThread( NULL, 0, MainThread, NULL, 0, &id );
WaitForSingleObject( hevent, INFINITE );
HANDLE thrds[2];
thrds[0] = CreateThread( NULL, 0, SenderThread, (LPVOID)id, 0, &id1 );
thrds[1] = CreateThread( NULL, 0, SenderThread, (LPVOID)id, 0, &id2 );
WaitForMultipleObjects( 2, thrds, TRUE, INFINITE );
PostThreadMessage( id, WM_QUIT, 0, 0 );
WaitForSingleObject( th, INFINITE );
} |
Partager