Linux 为什么是C++;11程序不会死锁吗?

Linux 为什么是C++;11程序不会死锁吗?,linux,c++11,pthreads,mutex,deadlock,Linux,C++11,Pthreads,Mutex,Deadlock,程序不需要在第二次锁定时死锁吗?例如,互斥锁被同一线程锁定两次 如果锁是由已经拥有互斥锁的线程调用的,那么行为是未定义的:程序可能会死锁,或者,如果实现可以检测到死锁,则可能会抛出资源死锁 #include <iostream> #include <mutex> using namespace std; int main() { mutex m; m.lock(); cout << "locked once\n"; m.

程序不需要在第二次锁定时死锁吗?例如,互斥锁被同一线程锁定两次

如果锁是由已经拥有互斥锁的线程调用的,那么行为是未定义的:程序可能会死锁,或者,如果实现可以检测到死锁,则可能会抛出资源死锁

#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