网站首页 > 物联资讯 > 技术分享

boost之mutex scoped_lock

睿丰德科技 专注RFID识别技术和条码识别技术与管理软件的集成项目。质量追溯系统、MES系统、金蝶与条码系统对接、用友与条码系统对接

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;     }       }

二.上面的代码好像似曾相识,是的,在防止内存泄露的时候采用的和上面类似的处理方式,更加简洁的方式是智能指针,类似的我们需要用智能锁改写上面的代码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;       }

 

RFID管理系统集成商 RFID中间件 条码系统中间层 物联网软件集成