В чем разница между boost :: io_service poll_one и run_one? - PullRequest
8 голосов
/ 04 января 2012

io_service :: poll_one Запустить цикл обработки событий объекта io_service выполнить один готовый обработчик.

против

io_service :: run_one Запустить цикл обработки событий объекта io_service выполнить не более одного обработчика.

Из этого объяснения может показаться, что poll_one может выполнять более одного обработчика? Использует ли run_one или poll_one какой-либо поток, который называется run (), или только поток, который вызывает poll_one / run_one?

Документация для ASIO очень скудна.

1 Ответ

14 голосов
/ 04 января 2012

poll_one вернется немедленно (без блокировки), если нет события для обработки.

run_one будет блокировать вызывающий поток, пока одно событие не будет готово к обработке.

Вы также можете проверить некоторую документацию здесь

...