Quali sono le differenze tra le funzioni incluse in <semaphore.h>
e <sys/sem.h>
? Esiste una situazione in cui è meglio usare un'intestazione o l'altra?Differenze tra <semaphore.h> e <sys/sem.h>
risposta
<sys/sem.h>
fornisce l'interfaccia per i semafori XSI (originariamente Unix System V). Questi non fanno parte dello standard POSIX di base (sono nell'opzione XSI che è in gran parte compatibile con Unix tradizionale) e sebbene non siano ancora considerati obsoleti/deprecati, molti programmatori li considerano deprecati e POSIX consiglia:
UTILIZZO PER L'APPLICAZIONE
POSIX Realtime Extension definisce interfacce alternative per la comunicazione tra processi. Gli sviluppatori di applicazioni che devono utilizzare IPC devono progettare le proprie applicazioni in modo che i moduli che utilizzano le routine IPC descritte nella comunicazione tra processi XSI possano essere facilmente modificati per utilizzare le interfacce alternative.
I vantaggi e gli svantaggi dei semafori XSI sono che sono, e devono essere dovuti al modo in cui la loro interfaccia funziona, agli oggetti dello spazio del kernel. Il vantaggio principale che questo ti dà è la possibilità di configurarli in modo che il kernel possa eseguire operazioni di back-out se il processo termina o viene ucciso in modo imprevisto. Il costo principale è che ogni operazione è un round-trip nello spazio del kernel, cioè sono molto lenti. Le interfacce per il loro utilizzo sono anche molto ottuse e difficili da apprendere e sono necessariamente una risorsa condivisa dal processo, il che significa che devi affrontare uno spazio dei nomi condiviso e problemi di pulizia delle risorse.
<semaphore.h>
definisce semafori POSIX, progettati in modo tale da poter essere implementati interamente in userspace, tranne nel caso conteso in cui il processo chiamerà nel kernel per andare a dormire. Le loro prestazioni dovrebbero essere quasi ottimali (vale a dire quasi impossibile da battere da soli) ma non sono altrettanto funzionali dei semafori XSI. I semafori POSIX offrono anche la possibilità di scegliere se si desidera un semaforo locale del processo (da utilizzare in un ambiente multi-thread o, in alcune condizioni, un gestore di segnale in un programma a thread singolo) o uno condiviso da processi, e nel secondo caso, hai anche la possibilità di lasciare che il sistema gestisca l'allocazione in uno spazio dei nomi condiviso per nome, o di ottenere da te la memoria condivisa e inizializzarla nella memoria condivisa.
Non sono la stessa/sostituzione tra loro ma due diverse implementazioni e forniscono diverse serie di funzioni. semaphore.h
è l'implementazione posix e sys/sem.h
è l'implementazione di sysV. POSIX è considered per essere più leggero e ampiamente utilizzato.
- 1. Differenza tra <? Php e <?
- 2. Differenze tra .CreateObjectSet <T>, .Set <T> e .CreateQuery <T>?
- 3. Differenze tra ElementName = "<Me>" e RelativeSource self?
- 4. Quali sono le differenze tra "=" e "<-" in R?
- 5. Ruby - Differenza tra matrice # << e matrice # push
- 6. differenza tra <> e =
- 7. Qual è la differenza tra cout << cout e cout << & cout in C++?
- 8. In ASP.Net, qual è la differenza tra <% = e <% #
- 9. Differenza tra operatori di stringa + e << in Ruby
- 10. Differenza tra ArrayList <>() e ArrayList <>() {}
- 11. Differenza tra <asp:table> e <table>?
- 12. Differenza tra <acronym> e <abbr>?
- 13. Differenza tra inizializzazioni stringstream.str (a_value) e stringstream << a_value
- 14. Qual è la differenza tra <%: e <% = e <% # in aspx?
- 15. Differenza tra <include> e <ViewStub> in android
- 16. Differenza tra ID <protocol> e NSObject <protocol>
- 17. C'è qualche differenza tra "! =" E "<>" in Oracle Sql?
- 18. Confronto delle differenze di prestazioni tra T-SQL Between e l'operatore '<' '>'?
- 19. Differenza tra add_lvalue_reference_t <T> e T &
- 20. GIT i file corrotti (<<<<<<<< testa)
- 21. PHP: <<< vs ob_start
- 22. Confronto (<), uscita (<<) e assegnazione (=) per boost :: opzionale
- 23. <% $, <% @, <% =, <% # ... qual è il problema?
- 24. performance di registrazione e operatore <<
- 25. <MailDefinition> e <%%> segnaposto
- 26. overloading << operatori e classi ereditate
- 27. Quando utilizzare <%# ... %> e <%= ... %>?
- 28. MySQL - TRA l'operatore con FLOAT (10,6) funziona come> e <, invece di> = e <=
- 29. PHP espressione <<< EOB
- 30. Func <T>() vs Func <T> .Invoke()