私はwatchdirを使用してサーバーで作業しており、内部コレクションにアイテムを追加しています。watchdirは、次のように作成されたスレッドによって定期的に参照されます。
this->watchDirThread = new boost::thread(boost::bind(&Filesystem::watchDirThreadLoop,
this,
this->watchDir,
fileFoundCallback));
fileFoundCallback
パラメータは、次の方法でも作成されboost::bind
ます。
boost::bind(&Collection::addFile, this->collection, _1)
ミューテックスを使用した同時アクセスからコレクションを保護したいのですが、クラスがコピーできないため、コピー可能なパラメーターが必要なため、クラスboost::mutex
にミューテックスを含めることができないという問題があります。Collection
boost::bind
ここでのミューテックスの役割は、コレクションの変更中にコレクションが読み取られないようにすることであるため、静的ミューテックスのアイデアは意味的に間違っているため、私は好きではありません。
この問題を解決するにはどうすればよいですか?