summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/thread/example/recursive_mutex.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/libs/thread/example/recursive_mutex.cpp')
-rw-r--r--src/boost/libs/thread/example/recursive_mutex.cpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/boost/libs/thread/example/recursive_mutex.cpp b/src/boost/libs/thread/example/recursive_mutex.cpp
new file mode 100644
index 000000000..8cb99d30d
--- /dev/null
+++ b/src/boost/libs/thread/example/recursive_mutex.cpp
@@ -0,0 +1,49 @@
+// Copyright (C) 2001-2003
+// William E. Kempf
+//
+// 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)
+
+#include <boost/thread/recursive_mutex.hpp>
+#include <boost/thread/thread.hpp>
+#include <iostream>
+
+class counter
+{
+public:
+ counter() : count(0) { }
+
+ int add(int val) {
+ boost::unique_lock<boost::recursive_mutex> scoped_lock(mutex);
+ count += val;
+ return count;
+ }
+ int increment() {
+ boost::unique_lock<boost::recursive_mutex> scoped_lock(mutex);
+ return add(1);
+ }
+
+private:
+ boost::recursive_mutex mutex;
+ int count;
+};
+
+counter c;
+
+void change_count()
+{
+ //std::cout << "count == " << c.increment() << std::endl;
+}
+
+int main(int, char*[])
+{
+ const int num_threads=4;
+
+ boost::thread_group threads;
+ for (int i=0; i < num_threads; ++i)
+ threads.create_thread(&change_count);
+
+ threads.join_all();
+
+ return 0;
+}