我想知道如何在另一个类的不同实例中共享一个类中的互斥锁。
现在,我有一个类 Indexer,它有一个 Boost mutex 和 condition_variable 作为私有成员变量。我在 main 中创建了 Indexer 类的 auto_ptr,并将 Indexer 的指针传递给另一个类 Robot 的实例。
我这样做如下:
std::auto_ptr<Indexer> index_service(new Indexer());
Robot a(*index_service.get());
Robot b(*index_service.get());
Robot c(*index_service.get());
机器人的构造函数是:
Robot(Indexer &index_service)
{
this->index_service = index_service;
}
机器人的标题看起来像:
class Robot
{
public:
Robot(Indexer &index_service);
private:
Indexer index_service;
};
但是,由于互斥锁是不可复制的,我得到一个错误。
我正在考虑制作互斥锁和条件变量 shared_ptrs 但我读到这可能会导致意外行为。
有人可以告诉我正确/正确的方法吗?
谢谢!