2011-01-31 17 views
5

Sono un programmatore C++.Uso di un diverso meccanismo IPC

Volevo conoscere uno scenario in tempo reale in cui è possibile utilizzare diversi meccanismi IPC come PIPE/Named, Shared Memory.

ho all'incirca sapere dove posso utilizzare socket e coda di messaggi. Ma per PIPE/Named PIPE e memoria condivisa non ho alcuna idea.

Questo è solo per la comprensione di diversi meccanismi di IPC e il loro utilizzo.

Grazie,

risposta

1

Avevo bisogno di usare named pipe per comunicare con la mia macchina virtuale Erlang che era in esecuzione come demone.

Credo che vengano lentamente rimpiazzati da "prese da tasca" in quanto offre una comunicazione bidirezionale a differenza dei tubi che è solo unidirezionale a meno che non creiamo due tubi diversi.

memoria condivisa sono ancora in uso in grandi applicazioni server come sarà il più veloce di tutti gli altri meccanismi in un sistema multiprocessore, ma di solito sono difficili da attuare nel modo giusto.

E l'uso di socket diventa necessaria solo quando è richiesta una comunicazione su una rete.

Anche in questo caso si tratta di una cosa "Usa il meccanismo che vi si addice meglio per l'applicazione"

+0

Grazie a tutti penso che questo darà un'idea dell'uso di IPC. –

+0

Siete i benvenuti :). – Arunmu

1

Abbiamo alcuni software nella nostra società che utilizza la memoria condivisa. Lo utilizza per lo streaming di dati da un processo ad altri processi. Gli zoccoli potrebbero essere usati per questo, ma dato che è uno-a-molti, dovrebbe essere creato un socket separato per ogni processo di consumo che non è veramente ottimale. Sui computer moderni che utilizzano un file condiviso probabilmente farebbero il lavoro, ma questo software è stato sviluppato a metà degli anni '90 quando i dischi erano piuttosto lenti e questo software ha requisiti di latenza piuttosto rigidi. Usa una sorta di buffer circolare in cui il processo produttore scrive i suoi dati. I semafori vengono utilizzati per la sincronizzazione in modo che altri processi non vedano i dati parzialmente aggiornati.

Nella maggior parte dei thread di software moderni sono di solito utilizzati al posto di più processi che utilizzano la memoria condivisa, però.

Per quanto riguarda i tubi, l'uso più comune per loro sono tubi di shell:

ps ax | grep java 

Credo named pipe sono in gran parte sostituiti dai socket. Anche se hanno ancora i loro usi, non sono a conoscenza di nessuno di loro.

Si potrebbe anche voler leggere the relevant chapter of the Art of Unix Programming di Eric Steven Raymond. Offre una panoramica molto buona dei metodi IPC Unix e dei loro usi.

+0

Grazie per aver preziosi comment.I credere TUBO/Nominato sono ancora usare pieno più veloce di socket.What i crediamo sia quando il controllo del volo è necessario, dovremmo usare socket. Per favore inserisci il tuo commento per pipe e memoria condivisa. –

+0

@Chris_vr, quello che sto dicendo è che non ho visto molti programmi che usano named pipe. Il fatto che siano più veloci non è di per sé sufficiente per usarli, in quanto sarebbe un segno di ottimizzazione prematura. Potrei essere d'accordo che potrebbero essere usati perché sono più semplici, ma non sono ancora ampiamente usati. Eric Steven Raymond [sembra essere d'accordo con questo] (http://www.faqs.org/docs/artu/ch07s02.html#plumbing). –

Problemi correlati