相关疑难解决方法(0)

std::atomic 中的任何内容都是免等待的?

如果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(免费提供)。如果满足下面的第一个条件,则算法是无锁的,如果满足以下两个条件,则是无等待的:

  1. 如果访问数据结构的线程之一在其操作中途被调度程序挂起,则其他线程必须仍然能够完成其操作而无需等待挂起的线程。
  2. 无论其他线程的行为如何,访问数据结构的每个线程都可以在有限步数内完成其操作。

c++ lock-free language-lawyer stdatomic wait-free

7
推荐指数
1
解决办法
658
查看次数

标签 统计

c++ ×1

language-lawyer ×1

lock-free ×1

stdatomic ×1

wait-free ×1