// 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 #include int once_value = 0; boost::once_flag once = BOOST_ONCE_INIT; boost::mutex mutex; void init_once_value() { boost::mutex::scoped_lock lock(mutex); once_value++; BOOST_CHECK_EQUAL(once_value, 1); } void test_once_thread() { unsigned const loop_count=100; for(unsigned i=0;iadd(BOOST_TEST_CASE(test_once)); return test; }