c++ - 原子操作需要硬件支持吗?

标签 c++ c atomic lock-free

最近在阅读无锁编程时,我遇到了“原子操作”。我开始深入研究它。所有链接都解释了如何编写原子操作及其用法。

但是,我正在寻找有关原子操作的一些详细信息。

  1. 原子操作需要任何硬件功能吗?
  2. 语言是否为其提供 API?如果是,原子 API 是如何实现的?
  3. 这些仅限于内核空间编程,还是也可用于用户空间编程?

最佳答案

Do atomic operations need any hardware capabilities?

当然,CPU 保证它们的某些指令是原子的。其中一些指令是“特殊的”,即与其他指令不同(带前缀或具有其他助记符),但某些指令可能是“正常的”。例如,对齐的存储和加载在大多数 CPU 上保证是原子的。

Do languages provide APIs for it? if yes, how are atomic APIs implemented?

当然,看看 C++ 实现的示例:https://en.cppreference.com/w/cpp/atomic/atomic

Are these limited only to kernel space programming, or are they available for user-space programming too?

当然,这些指令不需要任何权限,因此它们可用于用户空间。有多种利用原子操作的库和数据结构。

搜索的关键字是“无锁”或“非阻塞”。这是一个示例:https://en.wikipedia.org/wiki/Non-blocking_linked_list

关于c++ - 原子操作需要硬件支持吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53332338/

相关文章:

c - 在 c 中将字节转换为整数时出现奇怪的值

c++ - 我如何证明 volatile 分配不是原子的?

c++ - 可以使用原子来减少读取占主导地位的多线程程序中的锁定吗?

bash - bash > 重定向是原子的吗?

c++ - 为什么即使我在重载函数中使用 malloc,重载的 new 运算符也会调用构造函数?

c++ - 当我有 iostream 和没有时,结果会有所不同,但没有错误

c++ - 为什么返回 Windows BOOL 数据类型而不是 int?

c - Visual Studio 中 C 中的 Weird Stack Error 错误

c++ - 使用内存映射文件在 C++ 中解析二进制文件太慢

c++ - 如何阅读和理解 C & C++ 标准以及其中使用的语言语法?