【发布时间】:2012-06-04 02:57:34
【问题描述】:
我在使用 deque 和 boost::mutex 时遇到了一些问题,我做了一个简单的示例,编译时会出现以下错误。
问题是我想拥有一个具有一个或多个互斥锁作为私有成员的类的双端队列。尽管目前该示例给出了错误:
错误 C2248:“boost::mutex::mutex”:无法访问在“boost::mutex”类中声明的私有成员
我看过一些相关的帖子,但到目前为止我还没有设法解决这个具体问题。
任何帮助将不胜感激...
#include <iostream>
#include <boost/thread.hpp>
#include <deque>
using namespace std;
class object {
public:
void process(void)
{
m_mutex.lock();
// do something
a = a*10;
m_mutex.unlock();
}
object(int v){ a = v; }
private:
int a;
boost::mutex m_mutex;
};
int main(int argc, char* argv[])
{
deque<object> obj;
obj.push_back( object( 1 ) );
obj.push_back( object( 2 ) );
obj.push_back( object( 3 ) );
obj.at(0).process();
obj.at(1).process();
obj.at(2).process();
return 0;
};
【问题讨论】:
-
您应该使用范围锁类型而不是手动调用锁定/解锁
标签: c++ multithreading boost boost-thread deque