代码之家  ›  专栏  ›  技术社区  ›  slf

C++中比较锁数据结构的比较与交换程序

  •  3
  • slf  · 技术社区  · 16 年前

    在本文中: 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

    我想相信作者的话,那么我还缺什么呢?我想这一定很明显。如果这看起来微不足道,我提前道歉。

    1 回复  |  直到 16 年前
        1
  •  8
  •   Potatoswatter    16 年前

    他描述了一个原子操作,它是由实现给出的,“不知怎么的”,这是硬件实现的东西的伪代码。