我可以在共享内存中放置一个 std::atomic 并<int64>期望原子操作吗?



std::atomic在共享内存中表现良好,还是没有定义?在共享内存中添加无锁基本类型似乎是一种简单的方法,但是我相信在共享内存的上下文中不可能保证原子行为。

为什么不呢?您只需要在共享内存区域内正确地分配和构造它。

看情况。

如果你正在使用的架构支持64位类型的原子操作,我希望它能工作。如果std::atomic使用互斥体模拟原子操作,那么您将遇到一个问题:

  • 共享内存通常用于进程之间的通信-被使用的互斥锁可能只在单个进程中的线程之间工作(例如Windows CriticalSection API)。
  • 或者,共享内存很可能被映射到不同进程的不同地址,互斥锁可能有内部指针,这意味着这不起作用。

相关内容

最新更新