我想知道两者之间有什么区别:
boost::timed_mutex _mutex;
if(_mutex.timed_lock(boost::get_system_time() + boost::posix_time::milliseconds(10))){
exclusive code
_mutex.unlock();
}
和
boost::timed_mutex _mutex;
boost::timed_mutex::scoped_lock scoped_lock(_mutex, boost::get_system_time() + boost::posix_time::milliseconds(10));
if(scoped_lock.owns_lock()) {
exclusive code
}
我已经知道 scoped_lock 使解锁调用变得不必要。我的问题是指:
- 为什么在第一种情况下我们将 timed_lock 称为互斥锁的成员函数,而在第二种情况下我们从互斥锁和持续时间构造一个锁。
- 哪个效率更高?
- boost::posix_time 的使用是可以的,还是建议使用另一种,例如chrono 或duration?
- 与上面指定的两种方法相比,是否有更好的方法(更快)尝试在“x”时间内获取锁?