zoukankan      html  css  js  c++  java
  • shared_lock and unique_lock

    简单的说:

    shared_lock是read lock。被锁后仍允许其他线程执行同样被shared_lock的代码。这是一般做读操作时的需要。

    unique_lock是write lock。被锁后不允许其他线程执行被shared_lock或unique_lock的代码。在写操作时,一般用这个,可以同时限制unique_lock的写和share_lock的读。

    例子:

    void GetFields(DBFields& _return, const std::wstring& sGUID)  {     printf("GetFields "); boost::shared_lock< boost::shared_mutex > xLock( GetMutex(sGUID) );

    //用shared_lock, 其他线程不可以执行下面的SetFields(), 但可以同时执行GetFields()

    _return = GetDataPtr(sGUID)->m_oFieldData.m_oDBFields;   }


    void SetFields(const std::wstring& sGUID, const DBFields& aFields) {

            printf("SetFields "); boost::unique_lock< boost::shared_mutex > xLock(  GetMutex(sGUID) );

    //用unique_lock, 其他线程一定要等到这个函数结束才可以执行SetFields()或GetFields()。

    GetSetDataPtr(sGUID)->m_oFieldData.m_oDBFields = aFields;   }

    转载自http://blog.csdn.net/daraemon418/article/details/7211693

  • 相关阅读:
    dhcp服务
    lvm逻辑卷扩容报错解决
    xshell连接linux使用vim无法正常使用小键盘
    OracleXETNSListener无法启动或启动停止
    RF常用关键字
    pytest的初始化清除操作
    pytest特点与执行
    flask 简单示例
    python操作redis
    centos7安装redis
  • 原文地址:https://www.cnblogs.com/defen/p/4410232.html
Copyright © 2011-2022 走看看