Domanda

Cercando di imparare ASIO, e sto seguendo gli esempi dal sito web.

Perché io_service necessario e che cosa fa esattamente? Perché ho bisogno di inviare a quasi tutte le altre funzioni durante l'esecuzione di operazioni asincrone, perché non può "creare" se stesso dopo il primo "vincolante".

È stato utile?

Soluzione

io_service del Asio è il facilitatore per operare sulle funzioni asincrone. Una volta che l'operazione asincrona è pronto, utilizza uno di thread in esecuzione di io_service di richiamarti. Se non esiste un tale discussione si utilizza la propria filettatura interna di effettuare una chiamata.

Pensate a come una coda che contiene operazioni. Esso garantisce che tali operazioni, quando eseguito, lo fanno solo sui filetti che hanno i suoi metodi run() o run_once(), o quando si tratta di prese e async, la sua filettatura interna.

Il motivo è necessario passare a tutti è fondamentalmente che qualcuno deve attendere per le operazioni asincrone per essere pronti, e come dichiarato nella sua propria documentazione io_service è il legame di ASIO al servizio di I / O del sistema operativo in modo che astrae la piattaforma del proprie notifiche asincrone, come kqueue, /dev/pool/, epoll, ei metodi per operare su quelli, come select().

Principalmente finisco usando io_service demultiplexare callback da diverse parti del sistema, e assicurarsi che operano sullo stesso filo, eliminando la necessità di blocco esplicito, poiché le operazioni vengono serializzati. Si tratta di un idioma molto potente per le applicazioni asincrone.

Si può dare un'occhiata alla documentazione di base per ottenere una migliore sensazione di perché è necessaria io_service e cosa fa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top