C ++ Boost Mutex Lock

时间:2017-07-04 18:15:01

标签: c++ boost mutex

最近我正在玩Boost互斥锁,我不确定我是否可以执行以下操作:

boost::recursive_mutex ListLock;

int main(){
  ListLock.lock();
  function1();
  ListLock.unlock();
}

void function1(){
  ListLock.lock();
  //some operations
  ListLock.unlock();
}

可以锁定ListLock两次吗?

1 个答案:

答案 0 :(得分:0)

这取决于锁定。递归锁允许...递归锁。所以,你的例子没问题。

非递归锁(例如std :: mutex或boost :: mutex)会死锁(从技术上讲,我认为行为未指定,但大多数POSIX线程实现要么死锁,要么基于EDEADLK引发异常)。

recursive_mutex

http://en.cppreference.com/w/cpp/thread/recursive_mutex