Considera la seguente situazione:
- Hai un programma che crea numerosi "lavori" che devono essere elaborati e li inserisce in una coda.
- Hai altri programmi di lavoro che catturano il successivo "lavoro" in linea in modo che possano elaborare quel lavoro.
- Ogni lavoro ha una categoria.
- Potrebbe esserci un numero qualsiasi di categorie.
- Due lavori che hanno la stessa categoria non possono essere elaborati contemporaneamente da lavoratori separati.
- Un lavoratore può elaborare un lavoro alla volta.
Una coda tradizionale non funzionerebbe in questa situazione perché esiste la possibilità che più processi della stessa categoria vengano elaborati contemporaneamente, il che non è consentito.
Potresti fare in modo che il lavoratore verifichi il lavoro che afferra e vedere se quella categoria di lavori ha un altro lavoratore che sta attualmente elaborando su di esso, e in tal caso reinserire il lavoro nella coda per essere elaborato in un secondo momento. Questo sembra un modo inefficiente per risolvere questo problema. Esistono strutture dati o modelli di progettazione che possono risolvere questo problema?
Se hai bisogno di ulteriori chiarimenti, faccelo sapere.