疑问:1,在多核或者多 CPU 系统下,即使原子操作也可能并行?2,接上,在多核或者多 CPU 系统下,lock-free 是不是废了?或者必须保证操作的变量在内存中,才能互斥?3,接上,使用 InterlockedCompareExchange 实现 lock-free 是不是必须申明共享变量为 volatile?4,接上,即使 volatile 避免了寄存器,但是 cache 中的副本呢?InterlockedCompareExchange 保证会刷新(另一cpu的cache)吗?我自己的看法:
1,并行
2,应该必须保证在内存
3,必须申明为 volatile
4,cache 的一致性由 cpu 保证
1,并行
2,应该必须保证在内存
3,必须申明为 volatile
4,cache 的一致性由 cpu 保证
MD,又被铺天盖地的滥用术语误导了
单 CPU 实现 lock-free 的核心可以叫做“原子操作”
多核或者多 CPU 实现 lock-free 只能靠“原子访问”我的回答都是对的
第3个问题win核心编程有特例:如果保证用指针访问则无需volatile
(作者有误导读者嫌疑,访问者未必“一直”用指针吧?)