2012-01-04 17 views
6

io_service :: poll_one Ejecute el bucle de procesamiento de eventos del objeto io_service para ejecutar un controlador listo.¿Cuál es la diferencia entre boost :: io_service poll_one y run_one?

vs

io_service :: run_one bucle de ejecución de procesamiento de eventos del objeto io_service para ejecutar a lo sumo un manejador.

De esa explicación, parece que poll_one podría ejecutar más de un controlador? ¿Run_one o poll_one utilizan un hilo llamado run() o solo el hilo que llama a poll_one/run_one?

La documentación para ASIO es muy escasa.

+0

uno ejecuta un controlador de LISTO, el otro ejecuta un controlador (listo o no). – akappa

+0

bien, ¿cuál es la diferencia entre un manejador LISTO y uno que no? – Eloff

+0

si tiene un socket y el trabajo del controlador es leer algo de él, entonces un controlador listo es uno que está conectado a un socket no vacío (para que no tenga que esperar a que los datos provengan de la red).) – akappa

Respuesta

12

poll_one volverá inmediatamente (sin bloqueo) en caso de que no haya ningún evento para procesar.

run_one bloqueará el hilo de llamada hasta que un evento esté listo para procesar.

También puede comprobar alguna documentación here

+0

Entonces la documentación para run_one debería leer "bloques hasta que ejecute exactamente un manejador" frente a "ejecuta como máximo un manejador"? – Eloff

+0

Sí, en otras palabras :) –

+0

Es confuso. "A lo sumo" aquí implica 0..1 pero si bloquea hasta que se procese un evento, ¿cuándo puede volver a haber procesado 0 eventos? – Eloff

Cuestiones relacionadas