所以我们有函数 a
和 b
的类。线程 one
调用 a
并且没有其他线程可以调用 a
或 b
直到 one
会调用 b
。意思是线程 one
将能够调用 a
并且比 a
和 ... 而且比 a
和 while 一个
没有调用b
其他想要调用a
或b
的线程正在等待。是否可以用 boost::mutex
做这样的事情,如何做?
最佳答案
互斥体不是问题;这是锁。最简单的解决方案是
只是手动调用 mutex::lock()
和 mutex::unlock()
,忘记了
关于 mutex::scoped_lock
;毕竟,您不希望锁
尊重范围。这个问题很常见;你可能
想在发生异常时释放锁。一种解决方案是
动态分配 mutex::scoped_lock
,并使用 std::auto_ptr
或 boost::shared_ptr
来管理它。 (奇怪的是,两者都不是
boost::mutex::scoped_lock
和 std::lock_guard
都是可移动的,所以你
需要动态分配才能转移所有权。)
关于c++ - Boost::mutex - 是否可以将它锁定在一个类函数中并在另一个类函数中解锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7118460/