1.boost裏的互斥量類型由mutex表示。ios
代碼示例:this
#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; } }
二.上面的代碼好像似曾相識,是的,在防止內存泄露的時候採用的和上面相似的處理方式,更加簡潔的方式是智能指針,相似的咱們須要用智能鎖改寫上面的代碼scoped_lock智能鎖。atom
#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; }