Es stdlib Logger clase thread-safe de Ruby?
-
09-10-2019 - |
Pregunta
En resumen, es la biblioteca estándar Logger clase en Ruby thread-safe ? Sólo información útil Google apareció alguien en un foro diciendo que "parece" thread-safe. Y no me siento como pasar tiempo probando un registrador para tratar de averiguar si es o no.
Por el momento estoy usando log4r que es seguro para subprocesos, pero es una exageración si la norma biblioteca ya lo hace.
Solución
Un rápido vistazo a logger.rb revela código como el siguiente:
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
Así que aunque no puedo responder por si se pone hilo de seguridad correcta ??em>, puedo confirmar que está haciendo un esfuerzo concertado para hacerlo bien!
P.S. A menudo es fácil de responder a las preguntas de este tipo por sí mismo mediante la lectura del código: -)
Otros consejos
A continuación es mi respuesta original, que es en realidad mal . El comentario de lectura Nemo157 a continuación. Salí de aquí sólo para referencia.
Original:
Yo no creo que importe. Todas las implementaciones de Ruby, que yo sepa por lo que corren ahora efectivamente un hilo a la vez de todos modos:. Sí permite que usted comience a muchos hilos, pero sólo uno ejecuta el subproceso a la vez por proceso
Algunas clases de Ruby están diseñados para estar seguro de rosca, pero no se dice explícitamente en palabras de una sílaba en su documentación. A diferencia de documentación en otros lenguajes de programación como PHP.
Recuerdo que me pregunté si era Queue
flujos seguros desbordamiento de pila, y aunque era, la documentación no explicó eso.