当由两个处理器处理的两个线程试图同时访问堆中的单个资源时,会发生什么情况?

时间:2019-06-12 03:46:46

标签: multithreading concurrency thread-safety

当两个处理器处理的两个独立线程同时访问堆中的同一属性时,会发生错误还是不会发生错误?

1 个答案:

答案 0 :(得分:1)

这一切都发生在微电子学层面。本质上,两个处理器中的缓存子系统必须相互协商,以决定哪个具有资源的最新副本,或者从拥有该处理器的DRAM中获取它。在英特尔架构上,这是通过称为QPI的芯片间网络发生的;在AMD架构上,它是Hypertransport(现在可能有一个新名称)。基本上,两种体系结构都是NUMA-并非所有处理器都可以直接访问DRAM-但是QPI / Hypertransport综合了SMP体系结构-假装所有处理器都可以直接访问所有DRAM。这就是您的软件/操作系统在运行时的体验。

QPI和Hypertransport非常复杂,并且对于软件而言是不可见的。