![]() |
Home | Libraries | People | FAQ | More |
boost::call_once — 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.
call_once(void (*func)() func, once_flag& flag);Example usage is as follows:
//Example usage:
boost::once_flag once = BOOST_ONCE_INIT;
void init()
{
//...
}
void thread_proc()
{
boost::call_once(&init, once);
}
Requires:
The function func shall not throw
exceptions.
Effects:
As if (in an atomic fashion):
if (flag == BOOST_ONCE_INIT) func();
Postconditions:
flag != BOOST_ONCE_INIT
| Copyright © 2001-2003 William E. Kempf |