summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/thread/test/test_7720.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/libs/thread/test/test_7720.cpp')
-rw-r--r--src/boost/libs/thread/test/test_7720.cpp56
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;
+}
+
+