Pertimbangkan situasi berikut:
- Anda memiliki program yang menciptakan banyak 'pekerjaan' yang perlu diproses dan menempatkannya dalam antrian.
- Anda memiliki program pekerja lain yang mengambil 'pekerjaan' berikutnya sehingga mereka dapat memproses pekerjaan itu.
- Setiap pekerjaan memiliki kategori.
- Mungkin ada sejumlah kategori.
- Dua pekerjaan yang memiliki kategori yang sama tidak dapat diproses secara bersamaan oleh pekerja yang terpisah.
- Seorang pekerja dapat memproses satu pekerjaan pada suatu waktu.
Antrian tradisional tidak akan berfungsi dalam situasi ini karena ada kemungkinan beberapa pekerjaan dari kategori yang sama akan diproses secara bersamaan, yang tidak diizinkan.
Anda bisa meminta pekerja memeriksa pekerjaan yang diambilnya dan melihat apakah kategori pekerjaan itu memiliki pekerja lain yang saat ini sedang memprosesnya, dan jika demikian kirimkan kembali pekerjaan ke dalam antrian untuk diproses di lain waktu. Ini sepertinya cara yang tidak efisien untuk menyelesaikan masalah ini. Apakah ada struktur data atau pola desain yang dapat menyelesaikan masalah ini?
Jika Anda perlu klarifikasi lebih lanjut, beri tahu saya.