同时访问共享内存是否会导致性能下降?

发布于 2024-11-10 03:56:03 字数 150 浏览 0 评论 0原文

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

即使不使用锁定,是否仍会存在与访问同一内存的多个线程相关的某种类型的开销或性能影响?如果是这样,为什么?它能产生多大的影响以及可以采取什么措施?

I have a simple multi-threaded app for my multi-core system. This app has a parallel region in which no threads write to a given memory address, but some may read simultaneously.

Will there still be some type of overhead or performance hit associated with several threads accessing the same memory even if though no locking is used? If so, why? How big an impact can it have and what can be done about it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

堇色安年 2024-11-17 03:56:03

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

This can depend on the specific cache synchronization protocol in use, but most modern CPUs support having the same cache line shared in multiple processor caches, provided there is no write activity to the cache line. That said, make sure you align your allocations to the cache line size; if you don't, it's possible that data that's being written to could share the same cache line as your read-only data, resulting in a performance hit when the dirtied cache line is flushed on other processors (false sharing).

不回头走下去 2024-11-17 03:56:03

我想说不会有。然而,当多个作者引用相同的参考文献时,就会出现问题。

I would say there wouldn't be. However the problem arises when you have multiple writers to the same references.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文