Módulo: Mongo::BackgroundThread Privado
- Incluye:
- Registrable
- Incluido en:
- Clúster::Ejecutor periódico, Servidor::Grupo de conexiones::Rellenador, Servidor::Monitor,Servidor::Monitor deinserción, Srv::Monitor
- Definido en:
- lib/mongo/subproceso_de_fondo.rb
Overview
Este módulo forma parte de una API privada. Debe evitar su uso siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.
No inicie ni detenga hilos en segundo plano en los finalizadores.Consulte jira.mongodb.org/browse/RUBY-2453 y bugs.ruby-lang.org/issues/.16288 Al finalizar el intérprete, los hilos en segundo plano se detienen primero y luego se invocan los finalizadores. En este punto, las estructuras de datos internas de MRI están prácticamente corruptas si se hace referencia a los hilos. Antes del cierre del intérprete, esto significa que los hilos no pueden detenerse si los objetos salen del ámbito, pero lo más probable es que los hilos contengan referencias a dichos objetos si se está realizando trabajo, por lo que los objetos no quedarían fuera del ámbito en primer lugar.
Los métodos ¡Corre!, ¿Corriendo? y ¡Alto! solían formar parte de la API pública en algunas de las clases que ahora incluyen este módulo. Por lo tanto, estos métodos deben considerarse parte de la API pública del controlador por motivos de compatibilidad con versiones anteriores. Sin embargo, su uso fuera del controlador está obsoleto.
Resumen constante
Constantes incluidas desde Loggable
Colapso del resumen del método de instancia
-
#¡corre! ⇒ Objeto
Iniciar el hilo de fondo.
- #¿corriendo? ⇒ Booleano
-
#¡Alto! ⇒ verdadero | falso
Detenga el hilo en segundo plano y espere a que finalice durante un período de tiempo razonable.
Métodos incluidos en Loggable
#log_debug, #log_error, #log_fatal, #log_info, #log_warn, #logger
Detalles del método de instancia
#¡corre! ⇒ Objeto
Iniciar el hilo de fondo.
Si el hilo ya está ejecutándose, este método no hace nada.
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# Archivo 'lib/mongo/background_thread.rb', línea 46 def ¡correr! Si @stop_requested && @hilo esperar_a_parar Si @hilo.alive? advertencia de registro("Iniciandoun nuevo hilo en segundo plano en #{self}, pero el hilo en segundo plano anterior todavía estáejecutándose") @hilo = nulo end @stop_requested = false end Si ¿correr? @hilo else ¡comenzar! end end |
#¿corriendo? ⇒ Booleano
63 64 65 66 67 68 69 |
# Archivo 'lib/mongo/background_thread.rb', línea 63 def ¿correr? Si @hilo @hilo.alive? else false end end |
#¡Alto! ⇒ verdadero | falso
Detenga el hilo en segundo plano y espere a que finalice durante un período de tiempo razonable.
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# Archivo 'lib/mongo/background_thread.rb', línea 77 def ¡detener! # Si el hilo no se ha iniciado, no hay nada que detener. # # Las clases que incluyen este módulo pueden querer realizar tareas adicionales # limpieza, que pueden realizar anulando este método. return true a no ser que @hilo # Los hilos en segundo plano generalmente realizan operaciones en un bucle. # Este indicador está destinado a ser verificado en cada iteración de la # bucles de trabajo y el hilo debe dejar de funcionar cuando esta bandera # está establecido. @stop_requested = true # Además de configurar la bandera, una clase en particular puede tener información adicional # formas de indicarle al hilo en segundo plano que deje de funcionar o # Despierta para verificar la bandera de parada, por ejemplo, estableciendo un semáforo. # Esto se puede lograr proporcionando el método pre_stop. pre_stop # Ahora hemos solicitado la terminación elegante y podemos esperar # para que el hilo salga por sí solo. Una versión futura del # El controlador puede permitir una cierta cantidad de tiempo para que el hilo salga. # Por ahora, también utilizamos la maquinaria Ruby para solicitar el hilo. # ser terminado, y hacerlo inmediatamente. # # Tenga en cuenta que esto puede provocar que el hilo en segundo plano finalice en #en medio de una operación. @hilo.matar esperar_a_parar end |