猿问

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

我正在寻找C ++中良好的读写器锁。我们有一个不经常使用的作者和许多经常使用的读者的用例,并希望对此进行优化。最好是我想要一个跨平台的解决方案,但是只有Windows是可以接受的。



料青山看我应如是
浏览 368回答 3
3回答

宝慕林4294392

较新版本的boost :: thread具有读/写锁定(1.35.0和更高版本,显然以前的版本无法正常工作)。他们的名字shared_lock,unique_lock以及upgrade_lock和上操作shared_mutex。

翻阅古今

从C ++ 17(VS2015)开始,您可以使用以下标准:#include <shared_mutex>typedef std::shared_mutex Lock;typedef std::unique_lock< Lock >&nbsp; WriteLock;typedef std::shared_lock< Lock >&nbsp; ReadLock;Lock myLock;void ReadFunction(){&nbsp; &nbsp; ReadLock r_lock(myLock);&nbsp; &nbsp; //Do reader stuff}void WriteFunction(){&nbsp; &nbsp; &nbsp;WriteLock w_lock(myLock);&nbsp; &nbsp; &nbsp;//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 >&nbsp; WriteLock;typedef boost::shared_lock< Lock >&nbsp; ReadLock;
随时随地看视频慕课网APP
我要回答