2012-01-04 9 views
6

io_service :: poll_one bir hazır işleyicisi yürütmek için io_service nesnenin olay işleme döngüsünü çalıştırın.Boost :: io_service poll_one ve run_one arasındaki fark nedir?

vs

io_service :: run_one en fazla bir işleyicisi yürütmek io_service nesnenin olay işleme döngüsünü çalıştırın.

Bu açıklamadan, poll_one'un birden fazla işleyiciyi yürütebileceği görülebilir? Run_one veya poll_one run() veya yalnızca poll_one/run_one çağıran iş parçacığı olan herhangi bir iş parçacığı kullanıyor mu?

ASIO için dokümantasyon çok seyrek.

+0

bire bir HAZIR işleyicisi yürütür bazı belgelere kontrol edebilir, diğeri işleyicisi (hazır ya da değil) yürütür. – akappa

+0

tamam olmayan bir HAZIR işleyici ve bir aradaki fark nedir? – Eloff

+0

Eğer bir soketiniz varsa ve işinizin işi bir şey okumaksa, bir hazır işleyici boş olmayan bir sokete takılı olan bir işleyicidir (bu nedenle, verilerin ağdan gelmesini beklemeniz gerekmez) – akappa

cevap

12

poll_one işlemek için bir olay olduğu durumda, hemen (engellenmeyen) döndürecektir. bir olay işlemek için hazır olana kadar

run_one çağıran iş parçacığı engeller.

Ayrıca here

+0

Bu nedenle, run_one belgelerinin "tam olarak bir işleyiciyi yürütebilene kadar" ya da "en çok bir işleyicide çalıştırılana kadar" blokları okuması gerekir? – Eloff

+0

Evet, başka bir deyişle koymak :) –

+0

Kafa karıştırıcı. "En fazla" burada 0..1 anlamına gelir. Ancak bir olay işlenene kadar engellenirse, işlenen 0 olayına dönünce ne zaman dönebilir? – Eloff

İlgili konular