为什么这个C ++ 11程序不会出现死锁?

时间:2015-10-10 21:48:49

标签: linux c++11 pthreads mutex deadlock

#include <iostream>
#include <mutex>

using namespace std;

int main()
{
    mutex m;
    m.lock();
    cout << "locked once\n";

    m.lock();
    cout << "locked twice\n";

    return 0;
}

输出:

./a.out 
locked once
locked twice

程序是否需要在第二次锁定时死锁,即互斥锁被同一个线程锁定两次?

1 个答案:

答案 0 :(得分:2)

  

如果已经拥有互斥锁的线程调用了锁,则行为未定义:程序可能会死锁,或者,如果实现可以检测到死锁,则可能会抛出resource_deadlock_would_occur错误情况。

http://en.cppreference.com/w/cpp/thread/mutex/lock