我试图了解锁是如何工作的。
假设我想在 C++ 中实现一个非常简单的锁
class Resource{
public:
bool lock();
void unlock();
... methods to change/read the Resource ...
private:
bool isLocked;
}
资源的用户调用lock(),如果isLocked为真,则lock()返回假,资源的用户要么等待,要么做其他事情。如果isLocked为假,则lock()设置isLocked为真,并返回真。然后调用者可以对资源做任何他想做的事情。之后他调用unlock()资源设置isLocked为假。
但是,如果资源的两个用户lock()恰好同时调用呢?这种情况很少发生吗?我认为更正式地说,这涉及使lock()操作“原子”,尽管我不确定该词的含义。