1// Copyright (C) 2013 Vicente Botet
2//
3// Distributed under the Boost Software License, Version 1.0. (See accompanying
4// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
6////////////////////////////////////////////
7
8//#define BOOST_THREAD_PROVIDES_GENERIC_SHARED_MUTEX_ON_WIN
9#include <boost/thread/thread_only.hpp>
10#include <boost/thread/shared_mutex.hpp>
11using namespace boost;
12
13shared_mutex mtx;
14
15const int max_count = 100;
16void f()
17{
18 int count =max_count;
19 while (count--)
20 {
21 upgrade_lock<shared_mutex> lock(mtx);
22 }
23}
24
25void g()
26{
27 int count =max_count;
28 while (count--)
29 {
30 shared_lock<shared_mutex> lock(mtx);
31 }
32}
33
34void h()
35{
36 int count =max_count;
37 while (count--)
38 {
39 unique_lock<shared_mutex> lock(mtx);
40 }
41}
42
43int main()
44{
45 thread t0(f);
46 thread t1(g);
47 thread t2(h);
48
49 t0.join();
50 t1.join();
51 t2.join();
52
53 return 0;
54}
55
56
57

source code of boost/libs/thread/test/test_7720.cpp