Una pregunta de entrevista CS: ¿Cómo escribo una cola de mensajes desde cero?

El concepto de cola de mensajes entra en contexto cuando dos procesos diferentes con capacidad limitada se comunican entre sí a través del mecanismo de comunicación de transmisión de mensajes. Un ejemplo de dicho sistema utilizado industrialmente es la cola de mensajes rojizos (RPOPLPUSH – Redis).
Como podemos observar, hay tres cosas aquí, un proceso que puede enviar y recibir un mensaje, una cola que no es más que una estructura de datos primero en entrar, primero en salir y un mensaje.
Podemos definir el sistema de la siguiente manera: un proceso se conecta con la programación de la cola de mensajes a través de una comunicación punto a punto utilizando un puerto predefinido no. (suponiendo que los sistemas están en una máquina diferente, en una sola máquina, sin embargo, se puede usar la llamada al programa Interop e incluso hacerlo más sistema, si todo el sistema se realiza en una sola aplicación modular, la llamada de función modular con referencia de valor de llamada también sería suficiente )
Tampoco el proceso del remitente envía el mensaje a la cola. Firma de la función podría ser como.
int sendMessage( char * receiver, int queue_port, char * msg_body)

Create message structure.

Create a queue host object.

invoke queue host call back method to push message in queue.

Supongamos que el mensaje es una estructura que contiene los siguientes campos.

mensaje de estructura {
char * remitente;
char * receptor;
tamaño uint_64;
mensaje char *;
}

Por lo tanto, la estructura de la cola se puede escribir como
Queue msg_queue.

Ahora el host de la cola realiza dos tareas, coloca el mensaje en cola y retira el mensaje de solicitud. Aquí estamos asumiendo que solo dos (módulos) procesados ​​se están comunicando, en función del diseño, el host de la cola puede asignar múltiples colas para cada par de módulos que se comunican a través del paso de mensajes. Para varias arquitecturas de quque, a cada módulo se le asigna un número de puerto específico asociado con su lista de colas.

Y, finalmente, recibe un módulo que agrupa la cola de mensajes con frecuencia para verificar si hay algún mensaje nuevo allí. Si su espacio local está disponible, lee los datos que el host de la cola ha eliminado.

More Interesting

¿Cuáles son algunas preguntas comunes de entrevista de nivel universitario sobre motores de CI?

¿Cuánto tiempo le tomaría a un desarrollador de software profesional sin conocimientos de algoritmos / estructura de datos prepararse para entrevistas de ingeniería de primer nivel?

Dada una matriz 3D de m * n * o dimensión y yace un cubículo en cada celda de la matriz. Suponga que los cubículos K están ocupados (usted conoce las coordenadas de los cubículos ocupados) y los restantes están vacantes. Tienes que arreglar una reunión.

¿Por qué los montones de Fibonacci se llaman montones de Fibonacci?

¿Qué lenguajes y temas de programación debo aprender para las entrevistas y colocaciones de pasantías?

Cómo preparar la entrevista de Google para un ingeniero de software

¿Puede la confianza eclipsar el conocimiento en una entrevista?

¿Cuáles son algunas de las preguntas de entrevista no estándar que se hacen actualmente en las empresas / escuelas B?

¿Cuál es el mejor método para verificar si un árbol binario es un árbol de búsqueda binario?

¿Qué tipo de preguntas se hacen en entrevistas para estudiantes de primer año (Mecánico)?

¿Qué tipo de preguntas le hicieron en su entrevista los reclutadores de Amazon? ¿Como de la estructura de datos, algoritmos, programación?

¿Cómo debo prepararme para una entrevista técnica de Infosys con 2 años de experiencia con .NET?

Cómo aprender a programar y desarrollar un interés en escribir códigos

Dada una matriz de enteros, para cada índice i, debe reemplazar el valor en i con el primer valor más pequeño que A [i] que viene después del índice i. ¿Cómo lo haces?

Cómo lidiar con las preguntas cuando se hacen en entrevistas de programación pero no es posible resolverlas en una hora