Lets threads wait for a single occurrence of a single event.
Declared in <absl/synchronization/notification.h>
class Notification;
The Notification object maintains a private boolean "notified" state that transitions to true at most once. The Notification class provides the following primary member functions: * HasBeenNotified() to query its state * WaitForNotification*() to have threads wait until the "notified" state is true. * Notify() to set the notification's "notified" state to true and notify all waiting threads that the event has occurred. This method may only be called once.
Note that while Notify() may only be called once, it is perfectly valid to call any of the WaitForNotification*() methods multiple times, from multiple threads -- even after the notification's "notified" state has been set -- in which case those methods will immediately return.
Note that the lifetime of a Notification requires careful consideration; it might not be safe to destroy a notification after calling Notify() since it is still legal for other threads to call WaitForNotification*() methods on the notification. However, observers responding to a "notified" state of true can safely delete the notification without interfering with the call to Notify() in the other thread.
Memory ordering: For any threads X and Y, if X calls Notify(), then any action taken by X before it calls Notify() is visible to thread Y after: * Y returns from WaitForNotification(), or * Y receives a true return value from either HasBeenNotified() or WaitForNotificationWithTimeout().
| Name | Description |
|---|---|
Notification [constructor] | Constructors |
~Notification [destructor] | Destroys the notification. |
operator= [deleted] | Deleted copy assignment; Notification is not copyable. |
HasBeenNotified | Queries the notification's "notified" state. |
Notify | Sets the "notified" state to true and wakes waiting threads. |
WaitForNotification | Blocks the calling thread until the notification is notified. |
WaitForNotificationWithDeadline | Blocks until the notification is notified or a deadline expires. |
WaitForNotificationWithTimeout | Blocks until the notification is notified or a timeout elapses. |