疑问: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.   

    你的问题,看win核心编程.多线程同步.讲的很详细.
      

  2.   

    谢谢楼上的,看了win核心编程,四个问题都有解
    MD,又被铺天盖地的滥用术语误导了
    单 CPU 实现 lock-free 的核心可以叫做“原子操作”
    多核或者多 CPU 实现 lock-free 只能靠“原子访问”我的回答都是对的
    第3个问题win核心编程有特例:如果保证用指针访问则无需volatile
    (作者有误导读者嫌疑,访问者未必“一直”用指针吧?)