absl::Notification

Lets threads wait for a single occurrence of a single event.

Synopsis

Declared in <absl/synchronization/notification.h>

class Notification;

Description

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().

Member Functions

NameDescription
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.