Every waitable object has a boolean value attached to it, named the signalled state, that is used to wait for that object. If the object is signalled, then the wait functions will not wait for it. If the object is non-signalled, then the wait functions will wait for it. Signalled state is defined in terms of wait condition. For example
- A mutex is signalled when it is not owned.
- An process/thread is signalled when it has finished.
- A semaphore is signalled when its count is greater than 0.
- A waitable timer is signalled when it has expired.
A signaled state indicates a resource is available for a process or thread to use it. A not-signaled state indicates the resource is in use.