• boost之mutex scoped_lock


    1.boost里的互斥量类型由mutex表示。

    代码示例:

    #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智能锁。

    #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;
    	
    }
    
  • 相关阅读:
    c/cpp枚举练习
    数据类型的标识
    引用变量
    cocos2dx 3.3 笔记
    希望获取到页面中所有的checkbox怎么做?
    如何判断某变量是否为数组数据类型?
    驼峰函数写法
    trim()函数
    js 获取页面可视区域宽高
    全屏滚动插件
  • 原文地址:https://www.cnblogs.com/liuweilinlin/p/3255846.html
Copyright © 2020-2023  润新知