【发布时间】:2012-08-10 05:26:34
【问题描述】:
我在 MessageQueue 类中使用 boost mutex 作为以下方法中的私有成员
void MessageQueue::Dequeuee()
{
Request rq(messageWareHouse.front().reqID,messageWareHouse.front().seq,
messageWareHouse.front().sMessage);
while(true)
{
boost::unique_lock<boost::mutex> lock(qMutex);
qCond.wait(lock);
**reqCollection**.find(messageWareHouse.front().reqID)->second.addSegments(messageWareHouse.front().seq,
messageWareHouse.front().sMessage );
}
....
reqCollection 是一张地图
map<size_t, Request> reqCollection;
当我尝试初始化互斥体时,内部请求出现以下错误
class Request
{
private:
size_t RequestID;
public:
boost::mutex qMutex;
Request(size_t requestID,size_t seq, std::string sMessage);
void addSegments(size_t seq, std::string sMessage);
};
据我在 google here 中搜索此错误,该问题的解决方案表示为
为互斥体或包含互斥体的类放置(智能)指针
但这是否意味着我只能通过传递指针在整个项目中使用一个互斥变量?为什么 boost 正在保护互斥锁
错误是
错误 7 错误 C2248: 'boost::mutex::mutex' : 无法访问在类 'boost::mutex' 中声明的私有成员
【问题讨论】:
-
您实际上并没有提供错误,它与您发布的链接上的相同吗?
-
对不起,我编辑了错误的帖子
-
不明白 Dequee() 方法中使用的Request结构在哪里?
-
我编辑的reqCollection是一张地图地图
reqCollection;
标签: c++ boost-thread boost-mutex