xref: /reactos/modules/rostests/tests/event/event.c (revision b09b5584)
1 #include <windows.h>
2 #include <stdio.h>
3 
4 HANDLE events[2];
5 
6 DWORD WINAPI thread( LPVOID crap )
7 {
8 	SetEvent( events[0] );
9 	if( crap )
10 		SetEvent( events[1] );
11 	return 1;
12 }
13 
14 int main( void )
15 {
16 	DWORD id, Status;
17 	printf( "Creating events\n" );
18 	events[0] = CreateEvent( 0, TRUE, FALSE, 0 );
19 	events[1] = CreateEvent( 0, TRUE, FALSE, 0 );
20 	printf( "Created events\n" );
21 	CreateThread( 0, 0, thread, 0, 0, &id );
22 	printf( "WaitForSingleObject %s\n", ( WaitForSingleObject( events[0], INFINITE ) == WAIT_OBJECT_0 ? "worked" : "failed" ) );
23 	ResetEvent( events[0] );
24 	CreateThread( 0, 0, thread, 0, 0, &id );
25 	printf( "WaitForMultipleObjects with waitall = FALSE %s\n", ( WaitForMultipleObjects( 2, events, FALSE, INFINITE ) == WAIT_OBJECT_0 ? "worked" : "failed" ) );
26 	ResetEvent( events[0] );
27 	CreateThread( 0, 0, thread, (void *)1, 0, &id );
28 	Status = WaitForMultipleObjects( 2, events, TRUE, INFINITE );
29 	printf( "WaitForMultipleObjects with waitall = TRUE %s\n", ( Status == WAIT_OBJECT_0 || Status == WAIT_OBJECT_0 + 1 ? "worked" : "failed" ) );
30 	ResetEvent( events[0] );
31 	printf( "WaitForSingleObject with timeout %s\n", ( WaitForSingleObject( events[0], 100 ) == WAIT_TIMEOUT ? "worked" : "failed" ) );
32 	return 0;
33 }
34