Мне было интересно, как разделить мьютекс одного класса между разными экземплярами другого класса.
Прямо сейчас у меня есть класс Indexer, который имеет мьютекс Boost и condition_variable в качестве частных переменных-членов. Я создаю auto_ptr класса Indexer в своей основной и передаю указатель 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;
};
Однако, поскольку мьютексы нельзя копировать, я получаю сообщение об ошибке.
Я думал о создании mutex и condition_variable shared_ptrs, но читал, что это может привести к неожиданному поведению.
Может ли кто-нибудь показать мне правильный / правильный способ сделать это?
Спасибо!