2012-04-02 11 views
24

Ben strace ile sürecin izini edilmiş ve bu şekilde girişlerini gördük: Böyle FUTEX_WAIT ve FUTEX_WAKE gibi ben man page for futex baktığımdaFUTEX_WAIT ve FUTEX_WAIT_PRIVATE arasındaki fark nedir?

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

Ancak, ben sadece gördük girdileri. Bu yüzden benim soru, benim strace çıkışımdaki bu isimlerin sonuna eklenmiş olan _PRIVATE'un ne anlama geldiğidir? Örneğin, futex man sayfasında ve FUTEX_WAKE_PRIVATE belgesinde belgelenmiş olan FUTEX_WAKE gibi bir şey arasında herhangi bir fark var mı, yoksa programla ne olduğunu anlamaya çalıştığımda aynı olduklarını varsayabilir miyim? ayıklama.

+1

[Bu?] ile ilgili bir şey olabilir mi? (http://lwn.net/Articles/229668/) –

cevap

29

Bu, işlemler arasında paylaşılmadığında futexes'i daha hızlı yapmak için linux/glibc tarafından yapılan bir optimizasyondur. senin ayıklama amaçları için http://lwn.net/Articles/229668/

, sadece _PRIVATE göz ardı edebilirsiniz: PTHREAD_PROCESS_SHARED özellik sizin mutex ayarlanmadığı sürece Glibc

Burada daha ayrıntılı olarak anlatılmış

FUTEX aramaların her birinin _PRIVATE versiyonlarını kullanacak sonekleri

İlgili konular