我正在尝试将 timed_mutex 与 scoped_lock 一起使用。我之前通过一些示例成功地使用了 scoped_lock,但现在我似乎没有找到解决方法,我也无法正确理解 boost 文档。
期望的行为如下:尝试获取 scoped_lock x 次,如果成功返回 true,否则返回 false。
目前我有:
boost::timed_mutex _mutex;
boost::timed_mutex::scoped_lock scoped_lock(_mutex, boost::get_system_time() + boost::posix_time::miliseconds(10));
但是,当我尝试(通过 boost 文档或示例)查找此 scoped_lock 是否会返回布尔值时,我什么也没找到或找到真正不同的方法来做到这一点。
因此,我问哪种方法是正确的,它是如何工作的,也许还有一些关于如何正确“阅读”boost 文档的指示。
更新:
所以
boost::timed_mutex _mutex;
boost::timed_mutex::scoped_lock scoped_lock(_mutex, boost::get_system_time() + boost::posix_time::miliseconds(10));
if(scoped_lock.owns_lock()) {
// exclusive code
}
将创建一个互斥锁,当我尝试使用 scoped_lock.owns_lock() 锁定时,它将尝试在 10 毫秒内获取锁(在这种情况下),如果时间到了并且没有获取锁,则返回 false?