gpt4 book ai didi

c++ - C++ 11 标准是否保证 std::atomic<> 被实现为无锁操作?

转载 作者:IT老高 更新时间:2023-10-28 21:47:19 27 4
gpt4 key购买 nike

我正处于一个交汇点,我正试图在基于互斥锁的数据结构和无锁(可能还有无等待)数据结构之间选择一个。

在深入挖掘的同时,我没有发现 C++11 标准是否支持原子类型的无锁操作,甚至不支持像 atomic_uint32_t 这样的基于宽度的积分。 .换句话说,它不仅仅是 std::atomic<> 被授予无锁的接口(interface);唯一看起来在整个标准库中被授予无锁的是 std::atomic_flag .

这是真的还是我错过了什么?这是什么原因?我的意思是标准调用“原子”的东西显然不是无锁的,甚至允许在后台使用互斥锁或阻塞调用。

最佳答案

C++ 标准不保证 std::atomic<T>操作是无锁的。但是,您可以使用 std::atomic<T>::is_lock_free()找出 std::atomic<T> 的操作无锁 29.6.5 [atomics.types.operations.req] 第 7 段:

Returns: True if the object’s operations are lock-free, false otherwise.

如果它不是无锁的,它仍然会执行所需的同步,但它会使用一些锁来执行此操作。

关于c++ - C++ 11 标准是否保证 std::atomic<> 被实现为无锁操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19900524/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com