如果我有一个关键部分,我必须实现一种锁定它的方法。我看到了以下变体:
while(lock)
{
//do nothing
}
lock = true;
// code of critical section
lock = false;
然而,我对此持怀疑态度,因为理论上,多个线程可以执行while(lock)
(检查并查看它是否等于false),并一起进入临界区,因为while(lock)
和lock = true;
不是在一个连续的块中执行。 我错了吗?还是这确实是一种不安全的方法?