简单的变量互斥体实现有什么问题?

时间:2019-07-09 15:35:06

标签: mutex

我有这个lock() unlock()互斥量实现:

void lock (boolean *m) {
 while (*m == true) {}
 *m = true;
}

void unlock (boolean *m) {
 *m = false;
}

问题是,这种方法有什么问题。除了明显的性能影响。

提前坦克很多!

1 个答案:

答案 0 :(得分:2)

假设互斥锁最初是true / locked,并且线程A和B分别称为lock。如果在C unlock之后,A和B在将m设置为true之前都分别检查m,则两者都会越过锁。