В настоящее время я пытаюсь использовать boost :: asio для некоторых простых tcp-сетей в первый раз, и я все уже наткнулись на то, что я не совсем уверен, как с этим бороться. Насколько я понимаю, метод io_service.run() в основном представляет собой цикл, который выполняется до тех пор, пока больше нечего делать, что означает, что он будет работать до тех пор, пока я не выпущу свой маленький серверный объект. Поскольку у меня уже есть какой-то mainlop, я бы предпочел обновить сетевой цикл вручную оттуда только ради простоты, и я думаю, что io_service.poll() будет делать то, что я хочу, вроде как:Boost :: Asio: io_service.run() vs poll() или как интегрировать boost :: asio в mainloop
void myApplication::update()
{
myIoService.poll();
//do other stuff
}
Это похоже на работу, но мне все еще интересно, есть ли недостаток в этом методе, поскольку это, похоже, не является обычным способом борьбы с услугами boost :: asios io. Является ли это допустимым подходом или я должен использовать io_service.run() в неблокирующем дополнительном потоке?
'io_service' не обязательно останавливается после возврата' io_service :: poll'. Зачем нужно 'io_service :: reset' перед последующим' io_service :: run' или 'io_service: poll'? – updogliu