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

  • 相关阅读:
    小程序支付
    小程序传参
    git
    学习过程遇到问题的解决方法
    进程创建注意事项:函数及对应包
    进程创建:函数及对应包
    mac解决eclipse 端口占用问题
    暴力
    doc2vec
    Java正则表达式的解释说明
  • 原文地址:https://www.cnblogs.com/defen/p/4410232.html
Copyright © 2011-2022 走看看