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.

¿Fue útil?

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 , 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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top