¿Cuáles son las diferencias entre las funciones incluidas en <semaphore.h>
y <sys/sem.h>
? ¿Existe una situación en la que es mejor usar un encabezado u otro?Diferencias entre <semaphore.h> y <sys/sem.h>
Respuesta
<sys/sem.h>
proporciona la interfaz para los semáforos XSI (originalmente Unix System V). Estos no son parte del estándar POSIX estándar (están en la opción XSI que es principalmente para la compatibilidad tradicional con Unix) y aunque no se consideran obsoletos/obsoletos, muchos programadores los consideran obsoletos, y POSIX informa:
APLICACIÓN USO
POSIX Realtime Extension define interfaces alternativas para la comunicación entre procesos. Los desarrolladores de aplicaciones que necesiten usar IPC deberían diseñar sus aplicaciones para que los módulos que utilizan las rutinas IPC descritas en XSI Interprocess Communication puedan modificarse fácilmente para usar las interfaces alternativas.
Las ventajas y desventajas de los semáforos XSI es que son, y deben ser, debido a la forma en que funciona su interfaz, los objetos del espacio del núcleo. El principal beneficio que esto le da es la capacidad de configurarlos para que el kernel pueda realizar operaciones de retroceso si el proceso se cierra o se cancela inesperadamente. El costo principal es que cada operación es un viaje de ida y vuelta al espacio del núcleo, es decir, son muy lentos. Las interfaces para usarlas también son muy obtusas y difíciles de aprender, y son necesariamente un recurso compartido de proceso, lo que significa que debe lidiar con un espacio de nombres compartido y problemas de limpieza de recursos.
<semaphore.h>
define semáforos POSIX, que están diseñados de tal manera que se pueden implementar por completo en el espacio de usuario, excepto en el caso contundente donde el proceso llamará al núcleo para ir a dormir. Su rendimiento debería ser casi óptimo (es decir, casi imposible de superar, haciendo lo propio), pero no son tan completos como los semáforos XSI. Los semáforos POSIX también le ofrecen la opción de elegir un semáforo de proceso local (para usarlo en un entorno de subprocesos múltiples o, incluso, en algunas condiciones, un manejador de señal en un programa de subproceso único) o un proceso compartido, y en este último caso, también tiene la opción de dejar que el sistema se encargue de asignarlo en un espacio de nombres compartido por nombre, o de obtener memoria compartida usted mismo e inicializarla en la memoria compartida.
No son el mismo/reemplazo uno para el otro sino dos implementaciones diferentes y proporcionan un conjunto diferente de funciones. semaphore.h
es la implementación de POSIX y sys/sem.h
es la implementación de sysV. POSIX es considered para que sea más ligero y se use ampliamente.
- 1. Diferencias entre .CreateObjectSet <T>,. Set <T> y .CreateQuery <T>?
- 2. ¿Cuáles son las diferencias entre "=" y "<-" en R?
- 3. ¿Diferencias entre ElementName = "<Me>" y RelativeSource?
- 4. diferencia entre <%! %> y <% %>
- 5. Diferencia entre <? Php y <?
- 6. Ruby - Diferencia entre Array # << y Array # push
- 7. ¿Diferencia entre <=> y == en Ruby?
- 8. incluyendo <xstring>, <cstring>, <string> y <wstring> en C++
- 9. ¿Cuál es la diferencia entre ofstream "<<" y Write
- 10. ¿Diferencia entre <asp:table> y <table>?
- 11. Diferencia entre <string> y <string.h>?
- 12. ¿Cuál es la diferencia entre <% %> y <%=%>?
- 13. ¿Cuál es la diferencia entre <%# %> y <%= %>?
- 14. En ASP.Net, ¿cuál es la diferencia entre <% = y <% #
- 15. Diferencia entre <acronym> y <abbr>?
- 16. ¿Cuál es la diferencia entre <%: y <% = y <% # en aspx?
- 17. ¿Cuál es la diferencia entre cout << cout y cout << y cout en C++?
- 18. Diferencia entre <include> y <ViewStub> en android
- 19. SortedList <>, SortedDictionary <> y Dictionary <>
- 20. << operador y recursividad
- 21. Diferencia entre clase y clase <?>
- 22. En C++, ¿cuáles son las diferencias entre static_cast <double> (a) y double (a)?
- 23. Diferencia entre operadores "no iguales" <> y! = En PHP
- 24. ¿Hay diferencias entre "y"
- 25. <% $, <% @, <% =, <% # ... ¿cuál es el problema?
- 26. sobrecarga << operadores y clases heredadas
- 27. Javascript y `<> ...</>` etiquetas
- 28. IList <int> vs Lista <int>
- 29. <%# %> vs <%= %>
- 30. diferencia de <path> y <classpath> en ant