Boost :: Asio: io_service.run () vs sondaggio () o come integrare boost :: asio in mainloop

Attualmente sto provando a usare boost :: asio per alcune semplici operazioni di tcp per la prima volta, e mi sono imbattuto in qualcosa che non sono davvero sicuro di come affrontare. Per quanto ne so io, il metodo io_service.run () è fondamentalmente un ciclo che viene eseguito finché non rimane più nulla da fare, il che significa che verrà eseguito fino a quando non rilascerò il mio piccolo object server. Dato che ho già una sorta di installazione di mainloop, vorrei piuttosto aggiornare manualmente il ciclo di networking da lì solo per semplicità, e penso che io_service.poll () farebbe quello che voglio, un po ‘come questo:

void myApplication::update() { myIoService.poll(); //do other stuff } 

Questo sembra funzionare, ma mi chiedo ancora se c’è un inconveniente da questo metodo poiché non sembra essere il modo comune per gestire i servizi boost :: asios io. È un approccio valido o dovrei piuttosto usare io_service.run () in un thread aggiuntivo non bloccante?