2011-01-31 13 views
5

Soy un programador de C++.Uso de diferentes mecanismos de IPC

Quería saber un escenario en tiempo real donde podamos usar diferentes mecanismos de IPC como PIPE/Named, Shared Memory.

Más o menos sé dónde puedo usar el socket y la cola de mensajes. Pero para PIPE/PIPE con nombre y memoria compartida no me estoy haciendo una idea.

Esto es solo para comprender los diferentes mecanismos de IPC y su uso.

Gracias,

Respuesta

1

Necesitaba utilizar una tubería con nombre para comunicarme con mi Erlang Vitual Machine que se estaba ejecutando como daemon.

Creo que están siendo reemplazados lentamente por "socketpairs", ya que ofrece comunicación bidireccional a diferencia de las tuberías, que es solo unidireccional a menos que creamos dos tuberías diferentes.

La memoria compartida se sigue utilizando en las aplicaciones de servidor grandes, ya que será la más rápida de todos los demás mecanismos en un sistema multiprocesador, pero por lo general es difícil de implementar de la manera correcta.

Y el uso de conectores solo es necesario cuando se requiere la comunicación a través de una red.

Una vez más se trata de una cosa "uso del mecanismo que más le convenga para la aplicación"

+0

Gracias a todos Creo que esto dará una idea de la tarifa sobre el uso de IPC. –

+0

De nada :). – Arunmu

1

Nos tienen algún tipo de software en nuestra empresa que utiliza memoria compartida. Lo usa para transmitir datos de un proceso a otros procesos. Se podrían usar sockets para ello, pero dado que es uno-a-muchos, se debería crear un socket separado para cada proceso de consumidor que no es realmente óptimo. En las computadoras modernas que usan un archivo compartido probablemente harían el trabajo, pero este software se desarrolló a mediados de los 90 cuando los discos eran bastante lentos, y este software tiene requisitos de latencia bastante estrictos. Utiliza un tipo de buffer circular donde el proceso de productor escribe sus datos. Los semáforos se utilizan para la sincronización, por lo que otros procesos no verán datos parcialmente actualizados.

En la mayoría de los subprocesos modernos de software se utilizan generalmente en lugar de múltiples procesos que utilizan memoria compartida.

En cuanto a los tubos, el uso más común para ellos son las del shell:

ps ax | grep java 

Creo canalizaciones con nombre se sustituyen en gran medida por los zócalos. Incluso si todavía tienen sus usos, no estoy al tanto de ninguno de ellos.

También le recomendamos que lea the relevant chapter of the Art of Unix Programming por Eric Steven Raymond. Ofrece una visión general muy buena de los métodos IPC de Unix y sus usos.

+0

gracias por vosotros comment.I valiosos creer TUBO/nombrados son todavía un uso completo más rápido que socket.What i creemos que cuando el control de vuelo es necesario, deberíamos usar un socket. Por favor, pongan su comentario para pipe y memoria compartida. –

+0

@Chris_vr, lo que estoy diciendo es que no he visto muchos programas usando named pipes. El hecho de que sean más rápidos no es suficiente para usarlos, ya que sería un signo de optimización prematura. Podría estar de acuerdo en que podrían usarse porque son más simples, pero aún así no se utilizan ampliamente. Eric Steven Raymond [parece estar de acuerdo con esto] (http://www.faqs.org/docs/artu/ch07s02.html#plumbing). –