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

问题描述 投票:0回答:2

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

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

  1. 原子操作需要任何硬件能力吗?
  2. 语言是否提供API?如果是,原子 API 是如何实现的?
  3. 这些仅限于内核空间编程,还是也可用于用户空间编程?
c++ c atomic lock-free
2个回答
2
投票

原子操作需要任何硬件能力吗?

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

语言是否提供API?如果是,原子 API 是如何实现的?

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

这些仅限于内核空间编程,还是也可用于用户空间编程?

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

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


-2
投票

原子操作需要任何硬件能力吗?

实际上,是的。原则上,C++(读作n3337)或C(读作n1570)标准甚至不需要像我们正在使用的那样的计算机(从理论上讲,你可以使用一群人类奴隶来代替,这是不道德的;一个更好的变体是老师让课堂上的学生“运行”一个小型的 C 或 C++ 程序;这是一种非常好的编程教学方式)。

另请参阅我的 thisthat 答案(与您的问题类似的问题)。

© www.soinside.com 2019 - 2024. All rights reserved.