1// Copyright (C) 2001-2003
2// William E. Kempf
3//
4// Distributed under the Boost Software License, Version 1.0. (See accompanying
5// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6
7#include <boost/thread/recursive_mutex.hpp>
8#include <boost/thread/thread.hpp>
9#include <iostream>
10
11class counter
12{
13public:
14 counter() : count(0) { }
15
16 int add(int val) {
17 boost::unique_lock<boost::recursive_mutex> scoped_lock(mutex);
18 count += val;
19 return count;
20 }
21 int increment() {
22 boost::unique_lock<boost::recursive_mutex> scoped_lock(mutex);
23 return add(val: 1);
24 }
25
26private:
27 boost::recursive_mutex mutex;
28 int count;
29};
30
31counter c;
32
33void change_count()
34{
35 //std::cout << "count == " << c.increment() << std::endl;
36}
37
38int main(int, char*[])
39{
40 const int num_threads=4;
41
42 boost::thread_group threads;
43 for (int i=0; i < num_threads; ++i)
44 threads.create_thread(threadfunc: &change_count);
45
46 threads.join_all();
47
48 return 0;
49}
50

source code of boost/libs/thread/example/recursive_mutex.cpp