Considere la siguiente situación:
- Tiene un programa que crea numerosos 'trabajos' que deben procesarse y los coloca en una cola.
- Usted tiene otros programas de trabajadores que toman el siguiente 'trabajo' en línea para que puedan procesar ese trabajo.
- Cada trabajo tiene una categoría.
- Podría haber cualquier número de categorías.
- Dos trabajos que tienen la misma categoría no pueden ser procesados al mismo tiempo por trabajadores separados.
- Un trabajador puede procesar un trabajo a la vez.
Una cola tradicional no funcionaría en esta situación porque existe la posibilidad de que múltiples trabajos de la misma categoría se procesen simultáneamente, lo que no está permitido.
Podría hacer que el trabajador verifique el trabajo que toma y vea si esa categoría de trabajos tiene otro trabajador que actualmente está procesando en su contra, y si es así, vuelva a enviar el trabajo a la cola para procesarlo más adelante. Esto parece una forma ineficiente de resolver este problema. ¿Existen estructuras de datos o patrones de diseño que puedan resolver este problema?
Si necesita más aclaraciones, hágamelo saber.