2012-06-15 16 views

risposta

14

<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.

4

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.

Problemi correlati