【发布时间】:2020-05-10 05:27:54
【问题描述】:
给定两个线程 a 和 b 从共享队列中读取。如果a 修改了队列并添加了一个元素,是否意味着当b 出现时,它会因为队列已被修改而导致缓存未命中?
例如,在队列末尾更改某些内容(猜测它是一个内存块)会导致缓存行无效并强制它们重新读取吗?
提前致谢。
【问题讨论】:
-
shared queue是什么意思?你在使用某种 Java 阻塞队列吗?感觉您的问题与 Java 无关,而且更底层,因为您谈论的是无效缓存行和缓存未命中。 -
我认为 JLS 引入了“happen-before”事件,以便更清楚地了解缓存未命中时会发生什么,但我不能说更多......
标签: java multithreading architecture false-sharing