我有这个lock()
unlock()
互斥量实现:
void lock (boolean *m) {
while (*m == true) {}
*m = true;
}
void unlock (boolean *m) {
*m = false;
}
问题是,这种方法有什么问题。除了明显的性能影响。
提前坦克很多!
答案 0 :(得分:2)
假设互斥锁最初是true / locked,并且线程A和B分别称为lock
。如果在C unlock
之后,A和B在将m
设置为true之前都分别检查m
,则两者都会越过锁。