如何回答这个问题?请帮忙。
考虑以下具有 3 个线程的程序。
locks l1, l2, l3;
*线程 1
while(1){
l1.lock();
l2.lock();
printf(“Red”);
l3.unlock();
l1.unlock();}
*线程 2
while(1){
l2.lock();
l3.lock();
printf(“Green”);
l1.unlock();
l2.unlock();}
*线程 3
while(1){
l3.lock();
l1.lock();
printf(“Blue”);
l2.unlock();
l3.unlock();}
a) 上述计划的可能结果是什么。你能解释一下这是怎么发生的吗? b) 这段代码会导致死锁吗?
最佳答案
这取决于 l1.lock()
、l1.unlock()
等实际执行的操作。由于这是标记为 C++(尽管标题说的是 C),如果这些函数调用正在管理 std::mutex
对象,结果是未定义的行为,每个线程解锁一个它没有锁定的互斥量.
关于c++ - C++多线程并行编程锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40947526/