为了账号安全,请及时绑定邮箱和手机立即绑定

C ++中的读取器/写入器锁

C ++中的读取器/写入器锁

C++
料青山看我应如是 2019-10-08 11:26:50
我正在寻找C ++中良好的读写器锁。我们有一个不经常使用的作者和许多经常使用的读者的用例,并希望对此进行优化。最好是我想要一个跨平台的解决方案,但是只有Windows是可以接受的。
查看完整描述

3 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

较新版本的boost :: thread具有读/写锁定(1.35.0和更高版本,显然以前的版本无法正常工作)。


他们的名字shared_lock,unique_lock以及upgrade_lock和上操作shared_mutex。


查看完整回答
反对 回复 2019-10-08
?
翻阅古今

TA贡献1780条经验 获得超5个赞

从C ++ 17(VS2015)开始,您可以使用以下标准:


#include <shared_mutex>


typedef std::shared_mutex Lock;

typedef std::unique_lock< Lock >  WriteLock;

typedef std::shared_lock< Lock >  ReadLock;


Lock myLock;


void ReadFunction()

{

    ReadLock r_lock(myLock);

    //Do reader stuff

}


void WriteFunction()

{

     WriteLock w_lock(myLock);

     //Do writer stuff

}

对于较旧的编译器版本和标准,可以使用boost创建读写锁:


#include <boost/thread/locks.hpp>

#include <boost/thread/shared_mutex.hpp>


typedef boost::shared_mutex Lock;

typedef boost::unique_lock< Lock >  WriteLock;

typedef boost::shared_lock< Lock >  ReadLock;


查看完整回答
反对 回复 2019-10-08
  • 3 回答
  • 0 关注
  • 367 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信