This struct provides a simple data type for ensuring a block of code is executed (only) once. Note that this is defined as a struct to allow constant initialization in a global or static context using BSLS_BSLONCE_INITIALIZER.

Synopsis

Declared in <bsls_bslonce.h>

struct BslOnce;

Member Functions

Name

Description

enter

Enter the one‐time block of code. 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 this object 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.

Data Members

Name

Description

d_onceState

State of the one‐time block of code managed by this object.

Created with MrDocs