lock-free CAS InterlockedCompareExchange volatile 疑问讨论
疑问:
1,在多核或者多 CPU 系统下,即使原子操作也可能并行?
2,接上,在多核或者多 CPU 系统下,lock-free 是不是废了?或者必须保证操作的变量在内存中,才能互斥?
3,接上,使用 InterlockedCompareExchange 实现 lock-free 是不是必须申明共享变量为 volatile?
4,接上,即使 volatile 避免了寄存器,但是 cache 中的副本呢?InterlockedCompareExchange 保证会刷新(另一cpu的cache)吗?
我自己的看法:
1,并行
2,应该必须保证在内存
3,必须申明为 volatile
4,cache 的一致性由 cpu 保证