web-dev-qa-db-ja.com

FUTEX_WAITとFUTEX_WAIT_PRIVATEの違いは何ですか?

私はstraceでプロセスをトレースしており、次のようなエントリを見てきました。

futex(0x7ffff79b3e00, FUTEX_WAKE_PRIVATE, 1) = 1                                                                
futex(0x7ffff79b3e00, FUTEX_WAIT_PRIVATE, 2, NULL) = 0 

ただし、 futexのマニュアルページ を見ると、FUTEX_WAITFUTEX_WAKEなどのエントリしか表示されていません。だから私の質問は、私のstrace出力でこれらの名前の最後に追加される_PRIVATEはどういう意味ですか?たとえば、futexのマニュアルページに記載されているFUTEX_WAKEと、straceの出力に表示されるFUTEX_WAKE_PRIVATEの間に違いはありますか、または理解しようとしているときに同じであると想定できますか私がデバッグしているプログラムで何が起こっているか。

28

これは、プロセス間で共有されていないfutexを高速化するためにlinux/glibcによって行われた最適化です。 Glibcは、ミューテックスで_PRIVATE属性が設定されていない限り、各futex呼び出しのPTHREAD_PROCESS_SHAREDバージョンを使用します

詳細はこちら: http://lwn.net/Articles/229668/

デバッグの目的で、_PRIVATEサフィックスを無視することができます

34
je4d