Pregunta

En Solaris cuando conecté DBX a una de las pilas que funcionan, me encontré con la llamada a fwrite conduce a __lll_lock_wait ()?

En el escenario que sucederá esto? Fwrite hace internamente intenta adquirir un bloqueo?

¿Fue útil?

Solución

los niveles de calidad que miraba a través de (C99 y POSIX) Qué dicen nada acerca bloqueado o desbloqueado IO en relación fwrite.

En mi sistema Linux es una mención de su no muy precisa de bloqueo en la página man:

   For non-locking counterparts, see unlocked_stdio(3).

y efectivamente, hay una función fwrite_unlocked. funciones estándar desbloqueados en POSIX sólo son getc_unlocked(), getchar_unlocked(), putc_unlocked() y putchar_unlocked().

Mi interpretación es que probablemente todos tamponada IO en el hombre (3) conjunto está bloqueado, y que sólo tiene muy pocas interfaces estandarizadas que hacer desbloqueado IO.

El que estas cosas se bloquean entre hilos es realmente una buena cosa ya que de lo contrario podría tener una salida completamente desordenado cuando varios subprocesos escriben a stderr, por ejemplo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top