原子操作需要硬件支持吗



最近,当我读到关于无锁编程的文章时,我遇到了"原子操作"。我开始深入研究。所有链接都解释了如何编写原子操作及其用法。

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

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

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

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

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

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

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

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

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

原子操作是否需要任何硬件功能。

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

也请参阅我的这个和那个答案(对于类似于你的问题(。

最新更新