¿Cómo funciona el modo UV_RUN_NOWAIT en libuv?

Cuando se ejecuta un bucle de eventos en libuv usando eluv_run función, hay un parámetro de "modo" que se usa con los siguientes valores:

UV_RUN_DEFAULT
UV_RUN_ONCE
UV_RUN_NOWAIT

Los dos primeros son obvios.UV_RUN_DEFAULT ejecuta el bucle de eventos hasta que no haya más eventos, yUV_RUN_ONCE Procesando un solo evento desde el bucle. Sin embargo,UV_RUN_NOWAIT no parece ser un modo separado, sino más bien una bandera que puede ser ORed con uno de los otros dos valores.

Por defecto, esta función se bloquea hasta que los eventos se terminan de procesar, yUV_RUN_NOWAIT lo hace sin bloqueo, pero cualquier documentación que pueda encontrar termina ahí. Mi pregunta es, si ejecuta el bucle de eventos sin bloqueo, ¿cómo se manejan las devoluciones de llamada?

El modelo de eventos libuv es de un solo hilo (patrón de reactor), por lo que asumo que es necesario bloquear para poder llamar a las devoluciones de llamada, pero si el hilo principal está ocupado, ¿qué sucede con un evento después de procesado? ¿Se "pondrá en cola" la devolución de llamada hasta que libuv recupere el control del subproceso principal? ¿O se enviarán las devoluciones de llamada en otro hilo?

Respuestas a la pregunta(1)

Su respuesta a la pregunta