2010-02-28 22 views

Respuesta

2

Tenía una serie de comandos que necesitaban ejecutarse en orden, pero el flujo del programa principal no dependía de su finalización, así que los puse en cola y los pasé a otro proceso a través de una cola de mensajes de System V para ser ejecutados independientemente del programa principal. Como las colas de mensajes proporcionan un protocolo de comunicaciones asíncronas, fueron una buena opción para esta tarea.

Para ser honesto, utilicé las colas de mensajes de System V porque nunca las había usado antes y deseaba. Estoy seguro de que hay otros métodos de IPC que podría haber usado.


Ha sido un tiempo desde que he hecho ningún tipo de programación VxWorks real, pero también se pueden encontrar las colas de mensajes utilizados en aplicaciones VxWorks. De acuerdo con VxWorks Application Programmer's Guide (búsqueda de Google), el mecanismo de comunicación primario de la intertask dentro de una sola CPU es colas de mensajes. VxWorks utiliza dos bibliotecas de subrutinas de colas de mensajes (POSIX y VxWorks).

1

Una vez escribí una utilidad de generador de E/S en modo de texto que tenía un hilo a cargo de actualizar la interfaz de usuario y varios hilos de trabajo para hacer el trabajo real de E/S. Cuando un subproceso de trabajador completaba una E/S, enviaba un mensaje de actualización al subproceso de la interfaz de usuario. Implementé este sistema de mensajes usando una cola de mensajes POSIX.

¿Por qué implementarlo así? Parecía una buena idea en ese momento, y tenía curiosidad sobre cómo funcionaban. Pensé que podría resolver el problema y aprender algo al mismo tiempo. Hubo muchas técnicas diferentes que pude haber usado, y no creo que haya una razón profunda por la que elegí esta técnica. No me di cuenta hasta más tarde, pero me alegré de haber utilizado una cola POSIX cuando tuve que transferir la utilidad a otro sistema (también era compatible con POSIX, así que no tuve que preocuparme por portar bibliotecas externas para obtener mi aplicación para ejecutar).

1

Puede usarlo para IPC con seguridad porque es un mecanismo de IPC. Con este mecanismo, puede escribir aplicaciones de proceso de eventos multiproceso en las que todas las aplicaciones están utilizando la cola y cada una de ellas está esperando un tipo especial de mensaje (un evento especial que se producirá). Cuando llega el mensaje, ese proceso toma el mensaje, lo procesa y lo coloca de nuevo en la cola para que el otro proceso pueda usarlo.
Una vez que escribí tal aplicación usando colas de mensajes. Es bastante fácil de trabajar y no necesita mecanismos de sincronización entre procesos como semáforos. También puede usarlo en lugar de archivos de memoria compartida de memoria asignada, en situaciones en las que lo único que necesita es enviar una estructura o algún tipo de datos empaquetados a otros procesos. Las colas de mensajes son mucho más fáciles de usar que cualquier otro mecanismo de IPC.
This book contiene toda la información que necesita saber sobre Message Queues y otros mecanismos de IPC en Linux.

+0

No ha explicado por qué alguna vez querría estas viejas cosas crudas en lugar de enchufes. – tchrist

+0

Bueno, en realidad, las colas de mensajes le permiten separar varias aplicaciones entre sí y crear una arquitectura de Message Broker que permite que los diferentes componentes se separen entre sí; y le permite implementar un mecanismo similar a RPC, los sockets se pueden usar como un mecanismo de transporte para implementar dicha arquitectura, pero necesitará un protocolo de nivel superior para esto. Para leer más acerca de Message Queues, consulte http://www.zeromq.org – gst

Cuestiones relacionadas