¿Cuál es la diferencia entre FUTEX WAIT y FUTEX WAIT PRIVATE?
He estado rastreando un proceso con strace y he visto entradas como:
futex(0x7ffff79b3e00, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x7ffff79b3e00, FUTEX_WAIT_PRIVATE, 2, NULL) = 0
Sin embargo, cuando miré la página de manual de para futex solo he visto entradas como FUTEX_WAIT
y FUTEX_WAKE
. Así que mi pregunta es ¿qué significa _PRIVATE
que se añade al final de estos nombres en mi salida de strace? Por ejemplo, hay alguna diferencia entre algo como FUTEX_WAKE
que está documentado en la página de manual de futex y FUTEX_WAKE_PRIVATE
que veo en la salida de strace o puedo asumir que son los lo mismo cuando estoy tratando de entender lo que está sucediendo con el programa que estoy depurando.
1 answers
Esta es una optimización realizada por linux/glibc para hacer que los futexes sean más rápidos cuando no se comparten entre procesos. Glibc usará las versiones _PRIVATE
de cada una de las llamadas futex a menos que el atributo PTHREAD_PROCESS_SHARED
esté establecido en su mutex
Se explica con más detalle aquí: http://lwn.net/Articles/229668 /
Para los propósitos de su depuración, simplemente puede ignorar los sufijos _PRIVATE
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-02 21:10:48