Saltar al contenido

¿Cuáles son las desventajas de las colas de mensajes de Linux?

Si encuentras algún problema con tu código o trabajo, recuerda probar siempre en un ambiente de testing antes aplicar el código al proyecto final.

Solución:

Las funciones msgctl(), msgget(), msgrcv()y msgsnd() son las funciones de cola de mensajes ‘System V IPC’. Funcionarán para ti, pero son bastante pesados. Están estandarizados por POSIX.

POSIX también proporciona un conjunto de funciones más moderno, mq_close(), mq_getattr(), mq_notify(), mq_open(), mq_receive(), mq_send(), mq_setattr()y mq_unlink() que podría ser mejor para ti (qué vergüenza de riquezas).

Sin embargo, deberá verificar cuál, si es que está instalado, en sus plataformas de destino de forma predeterminada. Especialmente en un sistema embebido, podría ser que tenga que configurarlos, o incluso instalarlos porque no están ahí por defecto (y lo mismo podría ser true de memoria compartida y semáforos).

La principal ventaja de cualquiera de los conjuntos de funciones de mensajes es que están predepurados (probablemente) y, por lo tanto, ya tienen problemas de concurrencia resueltos, mientras que si lo va a hacer usted mismo con memoria compartida y semáforos, tiene mucho de trabajo por hacer para llegar al mismo nivel de funcionalidad.

Entonces, (re)utilízalo cuando puedas. Si es una opción, utilice uno de los dos sistemas de cola de mensajes en lugar de reinventar el suyo propio. Si finalmente descubre que hay un cuello de botella en el rendimiento o algo similar, entonces puede investigar y escribir sus propias alternativas, pero hasta entonces: ¡reutilizar!

Las colas de mensajes del Sistema V (las que son manipuladas por las llamadas al sistema msg*) tienen muchas peculiaridades y trampas extrañas. Para código nuevo, recomiendo enfáticamente usar sockets de dominio UNIX.

Dicho esto, también recomendaría encarecidamente el paso de mensajes IPC sobre los esquemas de memoria compartida. La memoria compartida es mucho más fácil de equivocarse y tiende a fallar mucho más catastróficamente.

El paso de mensajes es excelente para pequeños fragmentos de datos y donde se debe mantener la inmutabilidad, ya que las colas de mensajes copian datos.

Un área de memoria compartida no copia datos al enviar/recibir y puede ser más eficiente para conjuntos de datos más grandes a cambio de un modelo de programación menos limpio.

Te mostramos las comentarios y valoraciones de los lectores

Al final de todo puedes encontrar las anotaciones de otros creadores, tú asimismo tienes la habilidad insertar el tuyo si lo crees conveniente.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *