Domanda

Secondo il Boost Documentazione , aventi più thread chiamano io_service::run() imposta un pool di thread che il servizio IO può utilizzare per eseguire le operazioni asincrone. Si afferma esplicitamente che tutte le discussioni che hanno aderito alla piscina sono considerati equivalenti.

Questo implica che non è possibile avere un thread separato per leggere da un socket e uno separato per la scrittura? Se è possibile, come faccio a implementare questo?

È stato utile?

Soluzione

Qualsiasi thread che chiama io_service::run() può essere utilizzato per richiamare gestori asincroni. Ma non si può specificamente specificare quale thread esegue che tipo di operazione. Ad esempio, se si chiama io_service :: run () in 2 thread in background, e si dovesse chiamare socket::async_send e socket::async_receive in un thread principale, i gestori saranno eseguiti in qualsiasi thread in background che è attualmente disponibile. Quindi sì, tutte le discussioni sono fondamentalmente considerati equivalenti, e possono essere utilizzati per qualsiasi operazione asincrona.

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