Boost :: mutex - 是否可以将其锁定在一个类函数中并在另一个类函数中解锁?

Rel*_*lla 2 c++ multithreading boost mutex boost-thread

所以我们有功能a和类b.线程one调用a,没有其他线程可以调用ab直到one将调用b.意思是线程one能够调用a而不是a...而且a,而且one没有调用b其他想要调用ab等待的线程.有可能做这样的事情,boost::mutex怎么做?

Jam*_*nze 6

互斥体不是问题; 这是锁.最简单的解决方案就是打电话mutex::lock()mutex::unlock()手动,忘记了mutex::scoped_lock; 毕竟,你不希望锁是尊重范围.问题是通常的问题; 你可能想要在异常的情况下释放锁.一种解决方案是mutex::scoped_lock动态分配,并使用a std::auto_ptr 或a boost::shared_ptr来管理它.(奇怪的是,既不是 boost::mutex::scoped_lock也不可std::lock_guard移动,所以你需要动态分配才能转让所有权.)