あるクラスのミューテックスを別のクラスの異なるインスタンス間で共有する方法を考えていました。
現在、プライベートメンバー変数としてBoostmutexとcondition_variableを持つクラスIndexerがあります。メインに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;
};
ただし、ミューテックスはコピーできないため、エラーが発生します。
mutexとcondition_variableshared_ptrsを作成することを考えていましたが、これにより予期しない動作が発生する可能性があることを読みました。
誰かがこれを行うための適切な/正しい方法を教えてもらえますか?
ありがとうございました!