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后缀