看到这里,我又想起volatile,这个关键词是只约束编译器,不会针对不同平台有cache相关的操作吧?
【 在 hgoldfish 的大作中提到: 】
: 如果确定已经在缓存里面,那是同步的。
: 但 CPU 核心写入缓存之前可能还有其它前置操作,正在某个写入 l1 cache 的队列里面等着呢。此时其它核心可能读到脏数据。而程序员又没法确定是否数据真的写入到缓存里面。所以还是乖乖使用同步工具吧。
: 如果是高级语言没有对应到底层的单一 word 变量,而是对应到 16 字节,32 字节多个变量跨了 cache line. 此时缓存同步协议也没法保证它们读写顺序是一致的。所以才会有 acquire, release, relaxed, ordered 这几个修饰。
: ...................
--
FROM 223.104.40.*