FUTEX_WAIT和FUTEX_WAIT_PRIVATE有什么区别?

Gab*_*ern 27 linux strace futex

我一直在用strace跟踪一个进程,并看到如下条目:

futex(0x7ffff79b3e00, FUTEX_WAKE_PRIVATE, 1) = 1                                                                
futex(0x7ffff79b3e00, FUTEX_WAIT_PRIVATE, 2, NULL) = 0 
Run Code Online (Sandbox Code Playgroud)

但是,当我查看futex手册页时,我只看到了诸如FUTEX_WAIT和的条目FUTEX_WAKE.所以我的问题是_PRIVATE,在我的strace输出中,这些名称的末尾附加了什么?例如FUTEX_WAKE,在futex手册页中记录的内容和FUTEX_WAKE_PRIVATE我在strace输出中看到的内容之间是否存在任何差异,或者当我试图了解正在调试的程序时发生的情况时,我可以假设它们是相同的.

je4*_*e4d 34

这是linux/glibc完成的一项优化,可以在进程间不共享futex时更快._PRIVATE除非在PTHREAD_PROCESS_SHARED互斥锁上设置了属性,否则Glibc将使用每个futex调用的版本

这里有更详细的解释:http://lwn.net/Articles/229668/

出于调试目的,您可以忽略_PRIVATE后缀