3 回答
TA贡献2021条经验 获得超8个赞
较新版本的boost :: thread具有读/写锁定(1.35.0和更高版本,显然以前的版本无法正常工作)。
他们的名字shared_lock,unique_lock以及upgrade_lock和上操作shared_mutex。
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;
- 3 回答
- 0 关注
- 367 浏览
添加回答
举报