Saya telah mempelajari The Art of Multiprocessor Programming 1 dan teks mereka kurang jelas, seperti buku yang Anda rujuk. Berikut beberapa kutipan dari TAMPP:
Kutipan 1 (Definisi bebas kunci)
Suatu metode bebas dari penguncian jika menjamin bahwa pemanggilan metode tak terhingga seringkali selesai dalam sejumlah langkah terbatas.
Kutipan 2 (Definisi nonblocking)
doa tertunda dari metode total tidak pernah diperlukan untuk menunggu doa tertunda lain selesai.
Kutipan 3 (klaim bahwa bebas-kunci tidak menghalangi)
Kondisi progres nonblocking bebas-tunggu dan bebas-kunci menjamin bahwa perhitungan secara keseluruhan membuat kemajuan, terlepas dari bagaimana sistem menjadwalkan utas.
Masalahnya adalah bahwa klaim dalam Kutipan 3 tidak jelas mengikuti dari definisi dalam Kutipan 1. Seperti yang telah disebutkan, antrian yang disinkronkan tampaknya memuaskan Kutipan 1: sering kali beberapa metode berhasil mendapatkan kunci dan menyelesaikannya.
Perhatikan secara khusus frasa yang agak kabur dalam Kutipan 3: "terlepas dari bagaimana sistem menjadwalkan utas". Hal ini tidak didahului oleh apapun deskripsi formal dari "sistem benang-penjadwalan", jadi kami yang tersisa untuk merekonstruksi sifat-sifatnya berdasarkan prasangka kita pada apa definisi harus berarti:
- sistem selalu menjalankan instruksi dari beberapa utas;
- mungkin tidak pernah menjalankan instruksi dari utas tertentu ;
- semua utas menggunakan metode yang dipertimbangkan.
Pada sistem seperti itu, metode pemblokiran tidak dapat bebas dari kunci: jika utas yang memegang kunci tidak pernah lagi dijadwalkan untuk dieksekusi, tidak akan ada utas lain yang dapat menyelesaikan permohonan metodenya dalam sejumlah langkah terbatas, namun akan ada beberapa utas yang menjalankan langkah-langkah metode. Untuk sistem yang lebih realistis, yang pada akhirnya menjamin waktu CPU untuk masing-masing utas, definisi tersebut harus secara eksplisit menyertakan properti nonblocking:
Definisi terkoreksi bebas kunci
Metode bebas kunci jika tidak diblokir dan, selain itu, menjamin bahwa pemanggilan metode yang tak terbatas seringkali selesai dalam sejumlah langkah terbatas.
1 Maurice Herlihy, Nir Shavit, Seni Pemrograman Multi-Prosesor, Elsevier 2008, hlm. 58-60