【发布时间】:2017-10-22 19:24:53
【问题描述】:
我如何判断代码在关键部分是互斥的?我理解这个概念,但是在代码跟踪方面,我很难识别互斥代码。这是有问题的代码段......
// flag[0] and [1] start as true
Thread 1
for(;;) {
flag[1] = false;
while(flag[2] == false)
flag[1] = true;
flag[1] = false;
// critical section
flag[1] = true;
// exit critical
}
Thread 2
for(;;) {
flag[2] = false;
while(flag[1] == false);
// critical section
flag[2] = true;
// exit critical
}
这太糟糕了,所以任何关于互斥的一般见解都会受到赞赏。
【问题讨论】:
标签: multithreading thread-safety mutual-exclusion