Pertanyaan yang sangat bagus Saya tidak ingat kursus CS 102 kami menyebutkan satu aplikasi untuk antrian berujung ganda.
Sampai hari ini, satu-satunya aplikasi yang saya tahu adalah penjadwal mencuri pekerjaan yang disebutkan dalam artikel Wikipedia .
Ini pada dasarnya berfungsi sebagai berikut:
Dalam model prosedural berulir tunggal normal, setiap panggilan fungsi mendorong catatan aktivasi pada apa yang disebut tumpukan panggilan . Catatan aktivasi berisi variabel dan parameter lokal panggilan itu. Setelah panggilan ke metode selesai ("kembali"), catatan aktivasi terakhir muncul dari tumpukan panggilan.
Ini sangat penting karena begitulah cara rekursi diimplementasikan: struktur rekursi diwakili dalam keadaan saat ini dari tumpukan panggilan.
Saat memparalelkan algoritma rekursif, kita dapat mengeksploitasi properti ini dengan mengganti tumpukan panggilan dengan antrian panggilan. Setiap utas dalam perhitungan mendapatkan antrian panggilannya sendiri dan mendorong serta memunculkan catatan aktivasi seperti dalam eksekusi berurutan.
Tetapi begitu sebuah utas telah menyelesaikan pekerjaannya (= antrian panggilannya kosong), itu mencuri pekerjaan dari utas lainnya dengan menghapus catatan aktivasi dari antrian panggilan utas itu dengan menghapus dari ujung yang “salah”.
Pada dasarnya, antrian panggilan bertindak sebagai dua tumpukan panggilan yang sekarang melayani dua utas.