【发布时间】:2009-07-09 17:52:43
【问题描述】:
我主要来自 c++ 背景,但我认为这个问题适用于任何语言的线程。这是场景:
我们有两个线程(ThreadA 和 ThreadB),共享内存中有一个值 x
假设对 x 的访问由互斥锁(或其他合适的同步控制)适当控制
如果线程碰巧在不同的处理器上运行,如果 ThreadA 执行写操作,但它的处理器将结果放在它的 L2 缓存而不是主存中,会发生什么情况?那么,如果 ThreadB 尝试读取该值,它会不会只是查看自己的 L1/L2 缓存/主内存,然后使用那里的旧值?
如果不是这样,那么如何处理这个问题?
如果是这样的话,那有什么办法呢?
【问题讨论】:
标签: multithreading caching multiprocessor