Tom*_*ica 2 c++ boost visual-studio-2010 c++11
我只是想用100多个upvotes来实现有关互斥的答案。我所做的就是复制粘贴代码,以便我的班级像这样读取(简化):
mymutexclass.hclass MyMutexClass {
public:
void write( uint32_t id, const std::string &str );
std::string read( uint32_t id ) const;
private:
boost::shared_mutex _access;
std::map<uint32_t, std::string> strings;
};
Run Code Online (Sandbox Code Playgroud)
mymutexclass.cppvoid MyMutexClass::write( uint32_t id, const std::string &str ) {
boost::unique_lock< boost::shared_mutex > lock(_access);
strings[id] = name;
}
std::string MyMutexClass::read( const uint32_t id ) const {
boost::shared_lock< boost::shared_mutex > lock(_access); // ERROR HERE
if( strings.count( id )>0)
return strings.at(id);
else
return "No value.";
}
Run Code Online (Sandbox Code Playgroud)
而且我得到一个错误,仅针对读取的互斥行:
error C2664: 'boost::shared_lock<Mutex>::shared_lock(const boost::shared_lock<Mutex> &)' : cannot convert parameter 1 from 'const boost::shared_mutex' to 'const boost::shared_lock<Mutex> &' D:\... path ...\mymutexclass.cpp
Run Code Online (Sandbox Code Playgroud)
我完全迷失了错误-它抱怨的类型之间有什么区别?我的意思是这些,来自错误:
const boost::shared_mutexconst boost::shared_lock<Mutex> &我在做什么错呢?该链接的答案被投票了100次,所以我想这很可能是正确的。
因为您的方法具有const签名,所以不允许您更改互斥体状态,因此不允许对其进行锁定。将互斥锁更改为mutable应修复以下错误:
mutable boost::shared_mutex _access;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1650 次 |
| 最近记录: |