Snapshot的timestamp
coconutnut

CS-453 Concurrent algorithms,slide: The Power of Registers

Atomic Snapshot实现的基本思路:

  • 两次扫描,得到相同的结果
  • 加timestamp避免ABA情况

不加timestamp的反例(p19)

写了一下具体步骤:

可以发现,两次collect得到的都是[0,0,2],最后返回[0,0,2]
但是实际上,并没有一个时间点,寄存器中实际的值是[0,0,2]
也就是说,虽然collect了同样的值,但这个值从未存在过

所以不仅值要相同,还需要timestamp来保证没有发生过更新