我在我的 centos 电脑上测试了 c++11 mutex。我尝试双重锁定此互斥锁以造成死锁。但是我运行之后一切正常,没有出现死锁。
#include <thread>
#include <mutex>
#include <iostream>
std::mutex m;
int main()
{
m.lock();
m.lock();
std::cout<<"i am ok"<<std::endl;
return 0;
}
编译器是centos 3.10.0-327.36.3.el7.x86_64中的g++ 4.8.5:
[zzhao010@localhost shareLibPlay]$ ./3.out
i am ok
最佳答案
锁定一个已经被同一个线程锁定的 std::mutex
是未定义的行为,因此它可能有效,也可能失败,它可能会喝光你所有的啤酒然后吐在沙发上。没有保证。
关于c++ - 为什么这个双重互斥锁不会造成死锁呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40919654/