Pregunta

Quiero compartir un archivo con múltiples procesos. Mi primer intento es utilizar punto a punto cola de mensajes con múltiples lectores desde que leí que el P2P de mensajes de la cola es muy rápido.

Durante mi prueba, parece que varios lectores leyendo de la misma cola y una vez que un mensaje es exagerado por un lector, otros lectores no podrán a buscar el mismo mensaje.

¿Qué es una mejor IPC para el intercambio de datos a múltiples procesos? Los datos se actualizan con frecuencia (varias veces por segundo), así que creo WM_COPYDATA no es una opción buena y va a interferir con la cola de mensajes "normal".

Mi segundo intento, probablemente será una memoria compartida + + mutex acontecimientos

¿Fue útil?

Solución

colas

Punto-a-punto no tendrán ningún problema. Sí, cuando se envía, sólo un receptor recibirá el mensaje y El remitente puede consultar la cola (llamando GetMsgQueueInfo ) para ver cuántos oyentes (wNumReaders miembro de la MSGQUEUEINFO ) existen y simplemente repetir el mensaje de ese número de veces.

Otros consejos

  

Por último, es perfectamente válido para más de un hilo o proceso para abrir la misma cola para acceso de lectura o de escritura. Punto a punto de colas de mensajes son compatibles con varios lectores y escritores múltiples. Esta práctica permite, por ejemplo, un proceso de escritor para enviar mensajes a varios procesos de cliente o varios procesos del escritor para enviar mensajes a un solo proceso lector. Hay, sin embargo, no hay manera de dirigir un mensaje a un proceso lector específico. Cuando un proceso, o un hilo, lee la cola, se leerá el siguiente mensaje disponible. Tampoco hay manera de difundir un mensaje a múltiples lectores.

     

Programación de Windows Embedded CE 6.0 Referencia del programador, cuarta edición, Douglas ebullición, página 304

A pesar de la advertencia, ide de ctacke parece estar bien para mis casos de uso.

Advertencia:
Mis lectores de cola necesitan Sleep(10) después van a buscar su parte de mensaje para permitir que otros lectores a ir a buscar los mensajes. Sin Sleep(), sólo un proceso lector se señaliza de espera.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top