根据这个,unique_lock可以通过声明a来实现递归锁定std::unique_lock<std::recursive_mutex>,实际上编译很好.
但是,通过检查unique_lock不遵循的代码(gcc 4.8.2和4.9.0)_Mutex.lock,而不是实现锁定方法本身:
void
lock()
{
if (!_M_device)
__throw_system_error(int(errc::operation_not_permitted));
else if (_M_owns)
__throw_system_error(int(errc::resource_deadlock_would_occur));
else
{
_M_device->lock();
_M_owns = true;
}
Run Code Online (Sandbox Code Playgroud)
显然,这可以防止互斥锁的递归锁定,实际上尝试递归锁定会抛出resource_deadlock_would_occur异常.
我在这里遗漏了什么,这是一个错误,还是unique_lock的文档错了?
TIA!