最近在阅读无锁编程时,我遇到了“原子操作”。我开始深入研究它。所有链接都解释了如何编写原子操作及其用法。
但是,我正在寻找有关原子操作的一些详细信息。
- 原子操作需要任何硬件功能吗?
- 语言是否为其提供 API?如果是,原子 API 是如何实现的?
- 这些仅限于内核空间编程,还是也可用于用户空间编程?
最佳答案
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/