【发布时间】:2016-11-04 03:24:20
【问题描述】:
我已经实现了如下的 ReadLock:
在 myClass.h 中
#include <boost/thread/locks.hpp>
#include <boost/thread/shared_mutex.hpp>
typedef boost::shared_mutex Lock;
typedef boost::shared_lock< Lock > ReadLock;
Lock myLock;
在 myClass.cpp 中:
void ReadFunction() const
{
ReadLock r_lock(myLock); // Error!
//Do reader stuff
}
该代码在 VS2010 中有效,但在 GCC4.0 中失败。编译器在 ReadLock 处抛出错误,说没有匹配的函数。我怀疑是变量 myLock 的“const”正确性问题。当我删除函数声明中的 const 时,错误消失了。有人可以向我解释一下吗?为什么这在 windows 下有效,但在 gcc 下无效?
这里有什么建议吗?谢谢。
【问题讨论】:
-
你试过可变互斥体吗?
-
可变的解决了问题!谢谢!
标签: c++ boost constants mutex boost-mutex