1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- // Copyright (C) 2013 Vicente Botet
- //
- // 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)
- ////////////////////////////////////////////
- //#define BOOST_THREAD_PROVIDES_GENERIC_SHARED_MUTEX_ON_WIN
- #include <boost/thread/thread_only.hpp>
- #include <boost/thread/shared_mutex.hpp>
- using namespace boost;
- shared_mutex mtx;
- const int max_count = 100;
- void f()
- {
- int count =max_count;
- while (count--)
- {
- upgrade_lock<shared_mutex> lock(mtx);
- }
- }
- void g()
- {
- int count =max_count;
- while (count--)
- {
- shared_lock<shared_mutex> lock(mtx);
- }
- }
- void h()
- {
- int count =max_count;
- while (count--)
- {
- unique_lock<shared_mutex> lock(mtx);
- }
- }
- int main()
- {
- thread t0(f);
- thread t1(g);
- thread t2(h);
- t0.join();
- t1.join();
- t2.join();
- return 0;
- }
|