In computer science, an event (also called event semaphore) is a type of synchronization mechanism that is used to indicate to waiting processes when a particular condition has become true.
An event is an abstract data type with a boolean state and the following operations:
- wait - when executed, causes the executing process to suspend until the event's state is set to true. If the state is already set to true has no effect.
- set - sets the event's state to true, release all waiting processes.
- clear - sets the event's state to false.
Different implementations of events may provide different subsets of these possible operations; for example, the implementation provided by Microsoft Windows provides the operations wait (WaitForObject and related functions), set (SetEvent), and clear (ResetEvent). An option that may be specified during creation of the event object changes the behaviour of SetEvent so that only a single thread is released and the state is automatically returned to false after that thread is released.
Events are similar in principle to the condition variables used in monitors, although the precise mechanism of use is somewhat different.