Cuando duermes un hilo, ¿qué está pasando realmente?
Veo que dormir un hilo "detiene el hilo actual durante un período de tiempo determinado" . Pero, ¿cómo funciona?
Según How Thread.sleep () funciona internamente y ¿Cómo funciona realmente Thread.sleep? :
- la duración del sueño estará sujeta a alguna granularidad específica del sistema
- el sueño está bloqueando
- el hilo sale de la CPU y detiene su ejecución
- el hilo no consume tiempo de CPU mientras duerme
Simplemente no puedo entender la mecánica interna y fundamental de lo que todo esto significa.
Entiendo que hay algo llamado planificador que es responsable de cambiar entre hilos.
Las fuentes parecen indicar que esto varía según el sistema operativo (¿o el hardware?) Y la mayoría de los subprocesos reciben entre 1 ms y 60 ms aproximadamente para realizar algunas acciones antes de que la CPU cambie a otro subproceso.
Pero cuando un hilo duerme (por ejemplo, muchos segundos), ¿cómo se reanuda? Supongo que un temporizador está involucrado de alguna manera, ¿es el reloj de la placa base? ¿Está relacionado con la velocidad del reloj de la CPU?
E incluso si se trata de un temporizador, ¿cómo sabe la CPU cuándo es hora de volver a prestar atención al hilo? ¿No tendría que revisar constantemente el hilo para ver si está listo? ¿No es efectivamente de votación y por lo tanto la clase de está consumiendo tiempo de CPU?
¿Está durmiendo un subproceso específico del idioma o es el sistema operativo responsable de él o es algo específico de la CPU?
¿Alguien podría explicarme esto con explicaciones básicas de cosas como el planificador y lo que está haciendo la CPU durante todo esto?