(1)、boost::lock_guard没有unlock()功能
boost::mutex mutex;
void foo( )
{
boost::lock_guard<boost::mutex> lock(mutex);
process(data);
///没有unlock()功能,程序结束自动析构
};
(2)、unique_lock允许设置超时,推迟锁定lock以及在对象销毁之前unlock。
boost::mutex mutex;
{
boost::unique_lock<boost::mutex> lk(mutex);
process( data );
lk.unlock( );
// do other thing
};
// 设置锁超时
{
boost::unique_lock<boost::timed_mutex> lk(mutex, std::chrono::milliseconds(3)); // 超时3秒
if(lk)
process( data );
};