我一直在使用strace跟踪一个进程,并看到了如下条目:
futex(0x7ffff79b3e00, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7ffff79b3e00, FUTEX_WAIT_PRIVATE, 2, NULL) = 0 但是,当我查看man page for futex时,我只看到了诸如FUTEX_WAIT和FUTEX_WAKE之类的条目。所以我的问题是,在我的strace输出中,附加到这些名称末尾的_PRIVATE是什么意思?例如,futex手册页中记录的FUTEX_WAKE和我在strace输出中看到的FUTEX_WAKE_PRIVATE之间有什么不同,或者当我试图理解正在调试的程序发生了什么情况时,我可以假设它们是相同的吗?
发布于 2012-04-03 05:10:49
这是一个由linux/glibc完成的优化,用于在进程之间不共享futexes时使它们更快。除非在互斥锁上设置了PTHREAD_PROCESS_SHARED属性,否则Glibc将使用每个futex调用的_PRIVATE版本
这里有更详细的解释:http://lwn.net/Articles/229668/
出于调试的目的,您可以忽略_PRIVATE后缀
https://stackoverflow.com/questions/9983765
复制相似问题