【发布时间】:2018-11-16 06:08:28
【问题描述】:
最近在阅读有关无锁编程的内容时,我遇到了“原子操作”。我开始深入研究它。所有链接都说明了如何编写原子操作及其用法。
不过,我正在寻找有关原子操作的一些详细信息。
- 原子操作是否需要任何硬件功能?
- 语言是否为它提供 API?如果是,如何实现原子 API?
- 这些仅限于内核空间编程,还是也可用于用户空间编程?
【问题讨论】:
-
如果我没记错的话,简短的回答是适当的锁定,所以#1 是否定的:en.m.wikipedia.org/wiki/Dekker%27s_algorithm,en.m.wikipedia.org/wiki/Peterson%27s_algorithm。硬件支持让一切变得更轻松
-
是的。在 x86 和 x64 上,这种“无锁”代码通常使用 LOCK 指令前缀实现 :) 不是 api,编译器的后端知道内在函数。