
Igor R wrote:
What is the best way to "emulate" synchronous behaviour with asio? The thread running this iteration should not block, but do other work (at the io_service?) until the requested results are received.
Probably, I misunderstood you, but aren't these 2 requirements contradicting? If you wish synchronous processing of messages, then each iteration in your loop should block and wait until the i/o is done.
I would like to "fake" the completion handler. I have managed to get something like it working, see below. void handle_request() { result_available = false; async_write( ... request ); // .. and more async-stuf // do other stuff, fake a blocking wait while ( !result_available ) { m_io_sevice.run_one(); } return result; } void handle_read() { ... result_available = true; } bool result_available; However, I'm not sure whether to choose of poll_one or run_one in this case. I.e., I'm looking for the cheapest "do some other stuff" of asio's io_service. Cheers, Rutger