原文:http://www.cnblogs.com/liuweilinlin/p/3255846.html
1.boost裏的互斥量類型由mutex表示。
代碼示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
#include <iostream> #include <string> #include <vector> #include <boost/thread.hpp> #include <boost/thread/mutex.hpp> using namespace
std; using namespace
boost; int
main() { mutex mu; try { this_thread::sleep(posix_time::seconds(2)); mu.lock(); //鎖定cout對象 cout << "Some operations"
<<endl; mu.unlock(); } catch ( int ) { mu.unlock(); return 0; } } |
2.上面的代碼好像似曾相識,是的,在防止內存泄露的時候採用的和上面類似的處理方式,更加簡潔的方式是智能指針,類似的我們需要用智能鎖改寫上面的代碼scoped_lock智能鎖。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#include <iostream> #include <string> #include <vector> #include <boost/thread.hpp> #include <boost/thread/mutex.hpp> using namespace
std; using namespace
boost; template < typename T> class basic_atom:noncopyable { private : T n; typedef mutex mutex_t; mutex_t mu; public : basic_atom(T x = T()):n(x){} T operator++() { mutex_t::scoped_lock lock(mu); return ++n; } operator T(){ return n;} }; int
main() { return 0; } |