// (C) Copyright 2006 Anthony Williams // Distributed under the Boost Software License, Version 1.0. (See // accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include #include #include boost::once_flag flag=BOOST_ONCE_INIT; int var_to_init=0; boost::mutex m; void initialize_variable() { // ensure that if multiple threads get in here, they are serialized, so we can see the effect boost::mutex::scoped_lock lock(m); ++var_to_init; } void call_once_thread() { unsigned const loop_count=100; int my_once_value=0; for(unsigned i=0;iadd(BOOST_TEST_CASE(test_call_once)); return test; }