繁体   English   中英

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

[英]Can I place a std::atomic<int64> in shared memory and expect atomic operation?

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

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

这取决于。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM