C++ 我可以放置std::atomic<;int64>;在共享内存中并期望原子操作?
是std::atomic在共享内存中运行良好,还是未定义?将无锁基本类型添加到共享内存似乎是一种简单的方法,但是我可以相信,在共享内存的上下文中不可能保证原子行为。为什么不呢,您只需要在共享内存区域内正确地分配和构造它。这取决于具体情况 如果您使用的体系结构支持64位类型上的原子操作,我希望它能够工作。如果C++ 我可以放置std::atomic<;int64>;在共享内存中并期望原子操作?,c++,c++11,ipc,shared-memory,atomic,C++,C++11,Ipc,Shared Memory,Atomic,是std::atomic在共享内存中运行良好,还是未定义?将无锁基本类型添加到共享内存似乎是一种简单的方法,但是我可以相信,在共享内存的上下文中不可能保证原子行为。为什么不呢,您只需要在共享内存区域内正确地分配和构造它。这取决于具体情况 如果您使用的体系结构支持64位类型上的原子操作,我希望它能够工作。如果std::atomic正在使用互斥体模拟原子操作,则您将遇到问题: 共享内存通常用于进程之间的通信,而使用的互斥锁可能只在单个进程中的线程之间工作(例如Windows CriticalSec
std::atomic
正在使用互斥体模拟原子操作,则您将遇到问题:
- 共享内存通常用于进程之间的通信,而使用的互斥锁可能只在单个进程中的线程之间工作(例如Windows CriticalSection API)
- 或者,共享内存很可能映射到不同进程中的不同地址,互斥锁可能有内部指针,这意味着这不起作用