我正在使用 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
需要可复制的参数。
我不喜欢静态互斥锁的想法,因为它在语义上是错误的,因为这里互斥锁的作用是防止我的集合在被修改时被读取。
我能做些什么来解决这个问题?