2012-01-04 11 views
6

io_service :: poll_one Eseguire il ciclo di elaborazione eventi dell'oggetto io_service per eseguire un gestore pronto.Qual è la differenza tra boost :: io_service poll_one e run_one?

vs

io_service :: run_one Eseguire ciclo di elaborazione evento dell'oggetto io_service di eseguire al massimo un gestore.

Da quella spiegazione sembrerebbe che poll_one potrebbe eseguire più di un gestore? Run_one o poll_one utilizzano qualsiasi thread chiamato run() o solo il thread che chiama poll_one/run_one?

La documentazione per ASIO è molto scarsa.

+0

uno uno esegue gestore PRONTO, l'altro esegue un gestore (pronto o meno). – akappa

+0

ok, qual è la differenza tra un gestore READY e uno che non lo è? – Eloff

+0

se si ha un socket e il lavoro del gestore è di leggerne qualcosa, allora un gestore pronto è uno che è collegato a un socket non vuoto (in modo da non dover aspettare che i dati provengano dalla rete) – akappa

risposta

12

poll_one sarà immediatamente ritorno (non bloccante) in caso non v'è alcun evento per elaborare.

run_one bloccherà il thread chiamante finché un evento è pronto per l'elaborazione.

Si potrebbe anche verificare alcuni documenti here

+0

Quindi la documentazione per run_one dovrebbe leggere "blocchi finché non esegue esattamente un gestore" contro "esegue al massimo un gestore"? – Eloff

+0

Sì, mettere in altre parole :) –

+0

È confuso. "Al massimo" qui implica 0..1 ma se blocca fino a quando non elabora un evento, quando può mai tornare dopo aver elaborato 0 eventi? – Eloff

Problemi correlati