2

我的多核系统有一个简单的多线程应用程序。这个应用程序有一个并行区域,其中没有线程写入给定的内存地址,但有些可能同时读取。

即使没有使用锁定,是否仍然存在与访问同一内存的多个线程相关的某种类型的开销或性能损失?如果是这样,为什么?它可以产生多大的影响以及可以做些什么?

4

2 回答 2

1

这可能取决于使用的特定缓存同步协议,但大多数现代 CPU 支持在多个处理器缓存中共享相同的缓存行,前提是缓存行没有写入活动。也就是说,确保将分配与缓存行大小对齐;如果您不这样做,则正在写入的数据可能与您的只读数据共享相同的缓存行,从而在其他处理器上刷新脏缓存行时导致性能下降(错误共享)。

于 2011-05-29T00:14:25.647 回答
0

我会说不会有。但是,当您有多个作者指向相同的引用时,就会出现问题。

于 2011-05-29T00:13:15.507 回答