单线程内的代码具有一定的内存保证,例如先读后写(即将一些值写入内存位置,然后读回它应该给出您写入的值)。
如果线程被重新安排在不同的 CPU 核心上执行,这样的内存保证会发生什么?假设一个线程将 10 写入内存位置 X,然后重新调度到不同的核心。该核心的 L1 缓存可能具有不同的 X 值(与之前在该核心上执行的另一个线程不同),因此现在读取 X 不会像线程期望的那样返回 10。当线程被调度到不同的核心上时,是否会发生一些 L1 缓存同步?
multithreading operating-system cpu-architecture memory-barriers cpu-cache