2010-04-27 10 views
11

Muteksli ifadeleri açıklamak için 'senkronize' sözcüğünü kullanmayı tercih etmenin basitçe bir hata olduğunu duydum (Düzen: 'Hata', burada sözcüklerin kötü bir seçimiydi. Lütfen düzenlemeye bakın) Java, ama merak ediyorum. Aslında seçimin arkasında bir sebep var. Java'daki senkronize anahtar kelime neden daha kesin 'mutekslenmiş' yerine 'senkronize' olarak adlandırılır?

[Düzenle] Safyan yorumlarına dürtüklemesiyle

, o senkronizasyon eklemek istiyorum

konuları arasında zamanlama ilişkisi kurulmasına ilişkin genel bir terimdir. Karşılıklı hariç tutma ve ücret kontrolü gibi şeyler içerebilir (ör. Aynı oranda bir şey yapan iki iş parçacığı). 'Senkronize' kullanmak için 'muteksed' gibi daha özel bir anahtar kelime yerine, karşılıklı hariç tutma kullanmak gereksiz yere belirsiz görünüyor.

+0

Muhtemelen yararlı bir başvuru kaynağı: http://stackoverflow.com/questions/1085709/what-does-synchronized-mean –

cevap

7

Bu bir hata değildir. Demek istediği anlamına gelir; kod karşılıklı dışlama sağlamak için diğer iş parçacıkları ile senkronize etmek zorundadır. Aslında, senkronize edilen terim "muteks" ten daha anlamlı olabilir, çünkü "muteks" çok özel bir tür senkronizasyon ilkelini ifade eder ve senkronize anahtar kelime herhangi bir sayıda iplik senkronizasyonu ilkesi kullanılarak uygulanabilir (test & aktif olarak ayarlanır) yoklama, semaforlar, vb.

+0

Bana göre 'mutex', 'karşılıklı dışlama' için genel bir kısaltma değildir. belirli bir dilde bir ilkelin adı olmak. –

+1

@Edward, hem UNIX hem de Windows'ta, mutex kilit, kilidi açma ve trylock'u destekleyen belirli bir ilkeldir. Java monitörü aynı zamanda durum değişkenlerinin yönleri olan beklemeyi ve bildirmeyi desteklemektedir. –

+0

@Safyan, yeterince adil, ancak 'senkronizasyon' genel olarak görevler arasındaki zamanlama ilişkilerini kurmaktan bahsetmiyor mu? Muteks aşırı yüklü bir terim olabilir, ancak 'senkronize' den daha net görünüyor. –

0

Senkronize anahtar kelime, bir Monitördeki kilidi almak ve serbest bırakmak için kullanılır. Muteks gibi, Monitörler eşzamanlılık kontrolü için kullanılır, ancak aynı değildir.

Eşzamanlı kendi içinde kullanmak bir hata değildir, ancak çok iş parçacığı ile kullanmak için düşük düzeyli bir yapı olabilir ve uygunsuz kullanım, çok iş parçacığı hatalarına hızla yol açabilir.

+0

Bence "Kendi içinde senkronize kullanımı" demek istediniz. –

+0

Teşekkürler, düzeltdim. – mdma

0

Eşzamanlı anahtar yerine muteksli anahtar sözcüğün kullanılması aslında terimi ifade etmenin iyi bir yoludur. Mutex ile hemen hemen net değiliz, ancak senkronize anahtar kelimenin kendisi kendini anlatıyor. Senkronize edilen, aslında bu koda erişmek isteyen tüm thread'lar arasında senkronize edilmesi gereken kodlara yerleştirilir. Bu yüzden senkronize olarak adlandırılır.