diff options
Diffstat (limited to 'src/boost/libs/thread/test/test_7720.cpp')
-rw-r--r-- | src/boost/libs/thread/test/test_7720.cpp | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/boost/libs/thread/test/test_7720.cpp b/src/boost/libs/thread/test/test_7720.cpp new file mode 100644 index 00000000..4dfe95a7 --- /dev/null +++ b/src/boost/libs/thread/test/test_7720.cpp @@ -0,0 +1,56 @@ +// 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; +} + + |