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 |