zoukankan      html  css  js  c++  java
  • boost之mutex scoped_lock

    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;
         
    }
    一切源于对计算机的热爱
  • 相关阅读:
    Beta冲刺置顶随笔
    Beta总结
    用户试用与调查报告
    Beta冲刺第七天
    Beta冲刺第六天
    Beta冲刺第五天
    Beta冲刺第四天
    Beta冲刺第三天
    Beta冲刺第二天
    爬虫基本操作
  • 原文地址:https://www.cnblogs.com/lidabo/p/3785156.html
Copyright © 2011-2022 走看看