BloombergLP::bsls::BslOnceGuard

This class provides a guard for managing a BslOnce for the purpose of executing a block of code (only) once.

Synopsis

Declared in <bsls_bslonce.h>

class BslOnceGuard;

Member Functions

NameDescription
BslOnceGuard [constructor]Create a guard to manage a block of code that is executed once.
~BslOnceGuard [destructor]Destroy this guard, and if enter had been called on this object without a subsequent call to leave, then call leave to signal the completion of the one-time block of code.
enter Enter the one-time block of code that is managed by the specified once. Return true if the one-time block of code has been entered, and false if the one-time block of code has already been executed. If this function returns false then the thread of execution in which enter returned true has already called leave -- i.e., the one-time block of code is guaranteed to have completed execution. The behavior is undefined unless once was originally initialized to BSLS_BSLONCE_INITIALIZER. Note that a successful enter locks a spin-lock; it is imperative that leave be called quickly.
leave Exit the one-time block of code. The behavior is undefined unless the caller had previously called enter, and enter had returned true.