多个线程可以同时访问共享内存吗?

时间:2016-03-18 16:52:16

标签: multithreading shared-memory cpu-architecture hardware-acceleration

多个线程并行运行在CPU的多个内核上。他们可以同时访问主内存吗?

1 个答案:

答案 0 :(得分:3)

主内存和共享的最后一级缓存读取带宽是多个内核竞争的共享资源,但是,读取相同内存字节的多个读取器通常比从单独页面读取的多个读取器完成得更快。 (混合中的写入不正确。)

如果共享内存区域足够小,以至于每个内核的私有缓存都很热,那么每个内核都可以以非常高的速度从中读取。写作会减慢其他读者的速度,尤其是其他作家(参见Are cache-line-ping-pong and false sharing the same?)。

如果他们不使用任何类型的锁定,其他读者不会放慢速度,而是依靠lockless algorithms来避免因竞争条件导致的错误。这就是为什么与仅使用锁定或生产者 - 消费者标志相比,无锁编程有时值得(正确)将其设置为正确的挑战。