Pregunta

Supongamos que hay diferentes grupos de científicos (médicos) que atienden tickets de emergencia.Cuando llegue un ticket de emergencia para la piscina común (grupo), en cualquier momento sólo un científico puede recoger el billete , mientras que otros pueden o serán notificados automáticamente de que este tipo en particular está trabajando en el ticket.

nota :Una sola persona puede trabajar en varios tickets con diferentes plazos.

Cuando el boleto es demasiado complicado de resolver, el tipo que recogió el boleto puede entregárselo a otros en el mismo grupo o en un grupo diferente. En tal caso, el motivo de dicha transferencia deberá comunicarse inmediatamente a otros.

En caso de necesidad extrema, la tarea de un solo billete se puede descomponer y distribuir entre grupos. Si una tarea se divide y se comparte entre grupos para un solo ticket, los chicos que comparten los tickets no podrán recoger ningún ticket nuevo ni trabajar en otro ticket existente (al hacerlo, se les notificará que están trabajando en un ticket compartido). boleto).


Mi pregunta es:
¿El patrón Observer es la mejor opción para notificar el servicio o hay otro patrón de diseño disponible para manejarlo sin problemas (sin interbloqueo)?

¿Fue útil?

Solución

Lo que necesita es una Cola.

En función de cómo ponerla en práctica, se podría utilizar

  • System.Collections.Generic.Queue , útil para sola enqueue hilo o quitar de la cola. También podría protegerlo con una cerradura para acceso simultáneo.
  • El concurrente Queue en VS10 , para múltiples hilos y conseguir poniendo
  • MSMQ por sus capacidades de gestión de colas, especialmente útil cuando se utiliza un diseño distribuido
  • una base de datos SQL Server, una vez más interesante cuando se utiliza un diseño distribuido

Para las notificaciones, sí, se requiere un mecanismo pub / sub. Una vez más, hay opciones allí.

Otros consejos

Me parece que los mensajes / Queuing sería un buen ajuste

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