Özetle, Ruby thread-safe'de standart kitaplık Logger sınıfı mıdır? Google'ın gündeme geldiği tek yararlı bilgi, forumda "güvenli" gibi görünen bir kullanıcı olduğunu söyledi. Ve olup olmadığını anlamaya çalışmak için bir kaydediciyi test etmek için zaman harcamak gibi hissetmiyorum.Ruby's stdlib Logger sınıfı iş parçacığı güvenli midir?
Kullanmakta olduğum iş parçacığı için log4r kullanıyorum, ancak standart kitaplık zaten bunu yapıyorsa aşırı hızı var. Bunun parçacığı güvenliği doğru alır mı kefil olamaz iken Yani, bundan yapmakta olduğunu teyit edebilir
def write(message)
@mutex.synchronize do
if @shift_age and @dev.respond_to?(:stat)
begin
check_shift_log
rescue
raise Logger::ShiftingError.new("Shifting failed. #{$!}")
end
end
@dev.write(message)
end
end
:
Evet, ancak, yalnızca bir iş parçacığı, çok işlemli Ruby kodu iş parçacığı için güvenli hale getirilemese bile, atom işlemlerinin olması gereken birden çok ifadeyi kapsayabilir. Örneğin. x = point.x; point.x = x + 1', thread iki deyim arasında kesilebilir ve başka bir iş parçacığı, bu iş parçacığı yeniden başladığında üzerine yazılacak olan "point.x" değerini değiştirebilir. Ayrıca JRuby, Java iş parçacıklarını kullandığı için gerçekten çok iş parçacıklı. – Nemo157
İyi nokta. Orijinal yanıtımı referans olarak bıraktım. – kirakun