linux中最低的锁定原语是什么。我知道futex_wait
和futex_wake
。但是除了锁定之外,futex还可以用于信令。什么是最低的锁定原语,我在哪里可以在glibc库中找到它?其次,条件变量是否也基于futexes?
答案 0 :(得分:1)
阅读有关futex的各种文档,包括futex(2)和futex(7)手册页。您将了解到pthread锁定原语是通过futexes和汇编代码的混合实现的(在便携式C99中做不可表达的事情)
(正如我在评论中所说)
答案 1 :(得分:0)
没有“最低”这样的东西,但是针对不同场景和目的的锁定以及“信令”不是区分不同种类锁的正确标准。
atomic_flag
可用于此。futex
的组合实现的
在下面等待等待。自旋锁最适用于您知道关键阶段只有少数汇编指令以及调度程序或信号不可能中断临界阶段的情况。与许多人倾向于相信的情况相比,情况更多。因此atomic_flag
是C语言中一个重要的新功能。
其他锁最好用于主动等待占用大部分系统资源的上下文中。