我可以在共享内存中放置一个 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)。 或者,共享内存很可能被映射到不同进程的不同地址,互斥锁可能有内部指针,这意味着这不起作用。
相关文章:
- 如何从 std::atomic 中提取指针 T<T>?
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 呼叫运营商<<临时
- std::atomic和std::condition_variable wait,notify_*方法之间的区别
- std::memory_order for std::atomic:<T>:wait
- 如何防止clang格式在流运算符调用之间添加换行符<<
- <<操作员在下面的行中工作
- MESI协议和std::atomic-它是否确保所有写入立即对其他线程可见?
- 在 lambda 表达式中使用 std::atomic
- C++std::atomic在程序员级别保证了什么
- 如果在 2 个线程中使用,是否值得将size_t声明为 std::atomic?
- MyType 允许 std::atomic 的确切要求是什么<MyType>?
- 无法将类型"T&"的非常量左值引用绑定到类型"T"的右值 t++ std::atomic<T>
- gcc Atomic在gcc 4.1.1中内置了奇怪的行为
- 在 C++20 之前和之后初始化 std::atomic
- Red Hat:使用<atomic>编译很好,但链接器找不到__atomic_store_16;什么库?
- std::atomic 和 std::mutex 的相对性能
- 使用用户定义的类型 UDT 实例化 std::atomic<>。如果 UDT 具有虚函数,则 l 墨水将失败。为什么?
- 简单使用 std::atomic 在两个线程之间共享数据
- Port pthread_cond_broadcast to std::atomic