Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
Waiting for Multiple Objects
Language:
Ada
Assembly
Bash
C#
C++ (gcc)
C++ (clang)
C++ (vc++)
C (gcc)
C (clang)
C (vc)
Client Side
Clojure
Common Lisp
D
Elixir
Erlang
F#
Fortran
Go
Haskell
Java
Javascript
Kotlin
Lua
MySql
Node.js
Ocaml
Octave
Objective-C
Oracle
Pascal
Perl
Php
PostgreSQL
Prolog
Python
Python 3
R
Rust
Ruby
Scala
Scheme
Sql Server
Swift
Tcl
Visual Basic
Layout:
Vertical
Horizontal
#include <windows.h> #include <stdio.h> HANDLE ghEvents[2]; DWORD WINAPI ThreadProc( LPVOID ); int main( void ) { HANDLE hThread; DWORD i, dwEvent, dwThreadID; // Create two event objects for (i = 0; i < 2; i++) { ghEvents[i] = CreateEvent( NULL, // default security attributes FALSE, // auto-reset event object FALSE, // initial state is nonsignaled NULL); // unnamed object if (ghEvents[i] == NULL) { printf("CreateEvent error: %d\n", GetLastError() ); ExitProcess(0); } } // Create a thread hThread = CreateThread( NULL, // default security attributes 0, // default stack size (LPTHREAD_START_ROUTINE) ThreadProc, NULL, // no thread function arguments 0, // default creation flags &dwThreadID); // receive thread identifier if( hThread == NULL ) { printf("CreateThread error: %d\n", GetLastError()); return 1; } // Wait for the thread to signal one of the event objects dwEvent = WaitForMultipleObjects( 2, // number of objects in array ghEvents, // array of objects FALSE, // wait for any object 5000); // five-second wait // The return value indicates which event is signaled switch (dwEvent) { // ghEvents[0] was signaled case WAIT_OBJECT_0 + 0: // TODO: Perform tasks required by this event printf("First event was signaled.\n"); break; // ghEvents[1] was signaled case WAIT_OBJECT_0 + 1: // TODO: Perform tasks required by this event printf("Second event was signaled.\n"); break; case WAIT_TIMEOUT: printf("Wait timed out.\n"); break; // Return value is invalid. default: printf("Wait error: %d\n", GetLastError()); ExitProcess(0); } // Close event handles for (i = 0; i < 2; i++) CloseHandle(ghEvents[i]); return 0; } DWORD WINAPI ThreadProc( LPVOID lpParam ) { // lpParam not used in this example UNREFERENCED_PARAMETER( lpParam); // Set one event to the signaled state if ( !SetEvent(ghEvents[0]) ) { printf("SetEvent failed (%d)\n", GetLastError()); return 1; } return 0; }
cl.exe
Show compiler warnings
[
+
] Compiler args
[
+
]
Show input
Compilation time: 4,35 sec, absolute running time: 0,44 sec, absolute service time: 4,81 sec
edit mode
|
history
|
discussion