boost.png (6897 bytes) Home Libraries People FAQ More

PrevUpHomeNext

Function call_once

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.

Synopsis

 call_once(void (*func)() func, once_flag& flag);

Description

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

PrevUpHomeNext