Çok İşlemcili Programlama Sanatı 1'i okudum ve metinleri de tıpkı bahsettiğiniz kitap gibi net değil. İşte TAMPP'den bazı alıntılar:
Alıntı 1 (kilitsiz tanımı)
Bir yöntem sonsuz sayıda adımın sonsuz sayıda adımda bitmesini garanti ederse kilitlemesizdir.
Alıntı 2 (engellemenin tanımı)
beklemede olan başka bir çağrının tamamlanmasını beklemek için hiçbir zaman toplam bir yöntemin beklemede tutulması gerekmez.
3. Alıntı (kilitlenmenin engelleme olmadığını iddia edin)
Beklemesiz ve kilitsiz tıkanmasız ilerleme koşulları, bir bütün olarak hesaplamanın, sistemin iş parçacıklarını nasıl zamanladığından bağımsız olarak ilerleme kaydetmesini garanti eder.
Sorun, Alıntı 3'teki iddianın Alıntı 1'deki tanımdan açıkça takip etmemesidir. Daha önce de belirtildiği gibi, senkronize edilmiş bir kuyruk Alıntı 1'i tatmin ediyor gibi görünüyor: Sonsuz sıklıkla bazı yöntemlerin kilidi başarıyla kazanması ve tamamlanması.
Alıntı 3'teki oldukça belirsiz ifadeye özellikle dikkat edin: "sistemin konuları nasıl planladığından bağımsız olarak". Bunun öncesinde "iş parçacığı çizelgeleme sistemi" nin herhangi bir resmi açıklaması yoktur, bu nedenle tanımların ne anlama geldiği konusundaki önyargılarımıza dayanarak özelliklerini yeniden yapılandırmaya bırakıldık :
- sistem her zaman bir iş parçacığının talimatlarını yürütür ;
- hiçbir zaman belirli bir iş parçacığının talimatlarını yürütemez ;
- tüm iş parçacıkları dikkate alınan yöntemi çağırıyor.
Böyle bir sistemde, bir engelleme yöntemi kilitlenemez: kilidi tutan iş parçacığı bir kez daha yürütmek üzere zamanlanmazsa, yöntem çağrısını sonlu adımlarla tamamlayabilecek başka bir iş parçacığı olmayacaktır, ancak yöntemin adımlarını yürüten bazı iş parçacıkları. Sonunda her iş parçacığına CPU zamanı vermeyi garanti eden daha gerçekçi bir sistem için, tanım açıkça engelleme yapma özelliğini içermelidir:
Kilitlenmemiş tanımı düzeltildi
Bir yöntem, engelleme yapmıyorsa kilitsizdir ve ek olarak, bazı yöntem çağrılarının sınırsız sayıda sonlu adımda tamamlandığını garanti eder.
1 Maurice Herlihy, Nir Shavit, Çok İşlemcili Programlama Sanatı, Elsevier 2008, s.58-60