// Copyright (C) 2001-2003 // William E. Kempf // // Permission to use, copy, modify, distribute and sell this software // and its documentation for any purpose is hereby granted without fee, // provided that the above copyright notice appear in all copies and // that both that copyright notice and this permission notice appear // in supporting documentation. William E. Kempf makes no representations // about the suitability of this software for any purpose. // It is provided "as is" without express or implied warranty. #include #include #include #include #include int once_value = 0; boost::once_flag once = BOOST_ONCE_INIT; void init_once_value() { once_value++; } void test_once_thread() { boost::call_once(init_once_value, once); } void do_test_once() { const int NUMTHREADS=5; boost::thread_group threads; for (int i=0; iadd(BOOST_TEST_CASE(test_once)); return test; }