Evet, bir içerik anahtarı kesinlikle oluşabilir. Bu nedenle, paylaşılan bir kaynağa erişirken bunun başka bir iş parçacığından da kilitlenmesi önemlidir. A iş parçacığı kilidi olduğunda, B iş parçacığı, kodun kilitli erişimine erişemez. İki konu Aşağıdaki kodu çalıştırırsanız Örneğin
: Bir bağlam anahtarı 1. adımdan sonra ortaya çıkabilir, ancak diğer iplik o zaman kiliti ve bu nedenle olamaz
1. lock(l);
2. -- change shared resource S here --
3. unlock(l);
, paylaşılan kaynağı değiştiremezsiniz . Konulardan birinin üzerindeki paylaşılan kaynağa erişim kilitsiz yapılırsa - kötü şeyler olabilir!
Atıklara ilişkin olarak, evet, bu savurgan bir yöntemdir. Bu yüzden kilitleri tamamen engellemeye çalışan yöntemler vardır. Bu yöntemler lock-free olarak adlandırılır ve bunlardan bazıları CAS (Karşılıklı-Karşılaştırma) veya diğerleri gibi güçlü kilitleme hizmetlerine dayanır.
Yani bu kaynak için başka bir iş parçacığı bekliyorsa, beklemeye devam etmek zorunda mı? –
@Tony - Evet, elbette ilk iş parçacığı – Paolo
Eh tarafından serbest bırakılıncaya kadar kilidi elde etmek için beklemeyi engelleyecek. Biri bir kilitden istediği şey bu. – botismarius