如果T是 C++ 基本类型,并且如果std::atomic<T>::is_lock_free()返回true,那么是否有任何东西std::atomic<T>是无等待的(不仅仅是无锁的)?像, load, store, fetch_add, fetch_sub, compare_exchange_weak, 和compare_exchange_strong。
您是否还可以根据 C++ 标准中指定的内容以及 Clang 和/或 GCC(您选择的版本)中实现的内容进行回答。
我最喜欢的无锁和无等待定义来自C++ Concurrency in Action(免费提供)。如果满足下面的第一个条件,则算法是无锁的,如果满足以下两个条件,则是无等待的: