【发布时间】:2013-02-17 05:48:48
【问题描述】:
我将使用来自boost/thread/mutex.hpp 的boost::mutex。
有几种方法可以锁定/解锁互斥锁:使用scoped_lock、unique_lock、lock_guard、互斥锁的成员函数::lock() 和::unlock() 以及非成员函数lock() 和unlock()。
我注意到,boost::scoped_mutex 是使用互斥锁的最流行的方式之一。为什么比成员函数::lock() 和::unlock() 更可取?
特别是为什么要使用
{
boost::scoped_lock lock(mutex)
// ...
// read/output sharing memory.
// ...
}
而不是
mutex.lock()
// ...
// read/output sharing memory.
// ...
mutex.unlock()
scoped_lock 是否更好,仅仅是因为某种样式编码的观点,还是::lock()/::unlock() 不够“线程安全”?
【问题讨论】:
标签: c++ boost thread-safety mutex