io_service::poll_one Run the io_service object's event processing loop to execute one ready handler.
vs
io_service::run_one Run the io_service object's event processing loop to execute at most one handler.
From that explanation it would seem poll_one could execute more than one handler? Does run_one or poll_one use any thread that's called run() or only the thread that calls poll_one/run_one?
The documentation for ASIO is very sparse.