0
我正在使用watchdir將服務器添加到內部集合的服務器上工作。將boost :: bind與包含boost :: mutex的類一起使用
this->watchDirThread = new boost::thread(boost::bind(&Filesystem::watchDirThreadLoop,
this,
this->watchDir,
fileFoundCallback));
的fileFoundCallback
參數也通過boost::bind
創建:該watchdir由被這樣創建一個線程定期瀏覽
boost::bind(&Collection::addFile, this->collection, _1)
我想用互斥來保護我的收藏從併發訪問但我的問題是boost::mutex
類是不可複製的,因此Collection
類中不能有互斥體,因爲boost::bind
需要可複製參數。
我不喜歡靜態互斥體的想法,因爲它在語義上是錯誤的,因爲互斥體的作用是阻止我的集合在被修改時被讀取。
我能做些什麼來解決這個問題?