小编use*_*123的帖子

当线程调度在不同的 CPU 核心上时,预期的内存语义(例如写入后读取)会发生什么情况?

单线程内的代码具有一定的内存保证,例如先读后写(即将一些值写入内存位置,然后读回它应该给出您写入的值)。

如果线程被重新安排在不同的 CPU 核心上执行,这样的内存保证会发生什么?假设一个线程将 10 写入内存位置 X,然后重新调度到不同的核心。该核心的 L1 缓存可能具有不同的 X 值(与之前在该核心上执行的另一个线程不同),因此现在读取 X 不会像线程期望的那样返回 10。当线程被调度到不同的核心上时,是否会发生一些 L1 缓存同步?

multithreading operating-system cpu-architecture memory-barriers cpu-cache

5
推荐指数
1
解决办法
471
查看次数