/Src/Dependencies/Boost/libs/test/test/sync_access_test.cpp
http://hadesmem.googlecode.com/ · C++ · 38 lines · 24 code · 10 blank · 4 comment · 1 complexity · 2a5689ae6444f69bc262f9dd90396f32 MD5 · raw file
- #define BOOST_TEST_MODULE sync_access_test
- #include <boost/test/unit_test.hpp>
- #include <boost/thread.hpp>
- #include <boost/thread/barrier.hpp>
- #include <boost/bind.hpp>
- #include <boost/ref.hpp>
- using namespace boost;
- namespace ut = boost::unit_test;
- static boost::mutex m;
- /// thread execution function
- static void thread_function(boost::barrier& b)
- {
- b.wait(); /// wait until memory barrier allows the execution
- boost::mutex::scoped_lock lock(m); /// lock mutex
- BOOST_CHECK_EQUAL(1,0); /// produce the fault
- }
- BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES( test_multiple_assertion_faults, 100 )
- /// test function which creates threads
- BOOST_AUTO_TEST_CASE( test_multiple_assertion_faults )
- {
- boost::thread_group tg; // thread group to manage all threads
- boost::barrier b(100); // memory barrier, which should block all threads
- // until all 100 threads were created
- for(size_t i=0; i<100; ++i)
- tg.create_thread(boost::bind(thread_function, ref(b))); /// create a thread and pass it the barrier
- tg.join_all();
- }
- // EOF