在本文中: Lock-Free Data Structures pdf )显示了以下“比较和交换”基本信息:
template <class T> bool CAS(T* addr, T exp, T val) { if (*addr == exp) { *addr = val; return true; } return false; }
整个过程是原子的
但这是怎么回事?难道其他参与者不可能改变 addr 在 if
addr
if
我想相信作者的话,那么我还缺什么呢?我想这一定很明显。如果这看起来微不足道,我提前道歉。
他描述了一个原子操作,它是由实现给出的,“不知怎么的”,这是硬件实现的东西的伪代码。