Nunca he visto ningún proyecto ni nada que utilice las colas de mensajes posix o sysv y, curioso, ¿para qué problemas o proyectos los han usado?¿Para qué ha utilizado colas de mensajes sysv/posix?
Respuesta
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).
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).
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.
- 1. Colas de mensajes en Ruby on Rails
- 2. Colas de mensajes frente a sockets
- 3. ¿Con qué fines ha utilizado T4?
- 4. ¿Uso en el mundo real de JMS/colas de mensajes?
- 5. remota de mensajes C/C++ las colas
- 6. ¿Las colas de mensajes están obsoletas en Linux?
- 7. ¿Alguien ha utilizado el marco rhomobile?
- 8. Creación dinámica de colas de mensajes asíncronos en Java
- 9. ¿Alguien ha utilizado waf para crear aplicaciones Java?
- 10. SetWindowsHookEx ser utilizado con una cola de mensajes ventanas
- 11. Colas de espera y colas en C#
- 12. ¿Cuándo ha utilizado la palabra clave "mutable" de C++?
- 13. ¿Cómo determinar qué compilador se ha utilizado para compilar un ejecutable?
- 14. Un sistema de colas para Perl
- 15. ¿Teoría de colas para programadores?
- 16. Nueva disciplina de colas linux tc para crear ráfagas ... se ha quedado sin conocimiento
- 17. ¿Qué es phonestateintreceiver.notifyPhoneCallState utilizado?
- 18. ¿Ha utilizado alguno de los intérpretes de C++ (no compiladores)?
- 19. ¿Alguien ha utilizado el MvcIntegrationTestFramework de Steve Sanderson?
- 20. ¿Qué patrones de diseño ha utilizado en sus esfuerzos de WPF y cuál le gusta?
- 21. Temas virtuales/colas y durabilidad
- 22. RabbitMQ: intercambios, colas y enlaces: ¿quién configura qué?
- 23. ¿Cuáles son las desventajas de las colas de mensajes de Linux?
- 24. ¿Alguna vez se ha utilizado Jetty para la implementación de producción?
- 25. Soluciones de colas para ASP.NET MVC
- 26. ¿Cuándo ha utilizado la programación dinámica en el campo?
- 27. ¿Ha utilizado Perf4J para recopilar y analizar medidas de rendimiento en la aplicación Java?
- 28. ¿Cómo hacer que el TChan de Haskell difiera los mensajes como las colas de mensajes de Erlang?
- 29. colas de hilo para los maniquíes
- 30. ¿Por qué implementar colas como matriz circular?
No ha explicado por qué alguna vez querría estas viejas cosas crudas en lugar de enchufes. – tchrist
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