Snapshot的timestamp
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来保证没有发生过更新