Sızdırılan Eşzamanlılık Tutamacı (ARCH6085)
Anahtar ruby.performance.leaked-concurrency-handle · Önem warning · Kategori performance
Bir kilit lock ile alınıp blok formu kullanılmadan tutulursa, bir istisna durumunda asla serbest bırakılmaz ve kilitlenme oluşur. Kilidi blok formuyla yönetin.
Hatalı
Bölüm başlığı “Hatalı”def increment(mutex, counter) mutex.lock counter.value += 1 mutex.unlockenddef increment(mutex, counter) mutex.synchronize do counter.value += 1 endendDüzeltme
Bölüm başlığı “Düzeltme”Kilitleri synchronize blok formuyla alın; iş parçacıklarını sınırlı bir ömürle başlatın ve join edin.