%thread.entities; ]>
The call_once function and once_flag type (statically initialized to BOOST_ONCE_INIT) can be used to run a routine exactly once. This can be used to initialize data in a thread-safe manner. The implementation-defined macro BOOST_ONCE_INIT is a constant value used to initialize once_flag instances to indicate that the logically associated routine has not been run yet. See call_once for more details. The call_once function and once_flag type (statically initialized to BOOST_ONCE_INIT) can be used to run a routine exactly once. This can be used to initialize data in a thread-safe manner. The implementation-defined type once_flag is used as a flag to insure a routine is called only once. Instances of this type should be statically initialized to BOOST_ONCE_INIT. See call_once for more details. implementation-defined The call_once function and once_flag type (statically initialized to BOOST_ONCE_INIT) can be used to run a routine exactly once. This can be used to initialize data in a thread-safe manner. Example usage is as follows: //Example usage: boost::once_flag once = BOOST_ONCE_INIT; void init() { //... } void thread_proc() { boost::call_once(once, &init); } once_flag& Function func As if (in an atomic fashion): if (flag == BOOST_ONCE_INIT) func();. If func() throws an exception, it shall be as if this thread never invoked call_once flag != BOOST_ONCE_INIT unless func() throws an exception.