Rush,

Thanks for this...

Rush Manbert wrote:
I have Asio implementations for TSocket, TServerSocvket, and TNonblockingServer running. Using the stress test, their data rates are very close to those of the native implementations on the Mac. (They're much worse on Windows, but I'm testing on a nearly 5 year old machine running XP>) This is using synchronous I/O though. If I add read or write timeouts, so that I need to use the async I/O methods, then the data rate is less. I can't say how much of the top of my head, because I haven't been doing careful benchmarks. More concerned with proper behavior.

That sounds very encouraging. Are you able to share this code?

* When you say async I/O, is this POSIX asynchronous I/O, implemented by Boost.ASIO ?

* When you say synchronous I/O, is this POSIX synchronous I/O, using normal UNIX read*() and write*() system calls, implemented by Boost.ASIO ?

* Is the UNIX non-blocking I/O model supported? These calls are synchronous, but may return EAGAIN as you probably already know, and require a Reactor around select().

Pardon my questions, I am still trying to get a feel for the Boost.ASIO model and how it can be used to implement Thrift within our existing code base in XORP. Timeouts on Thrift RPC are a very desirable feature for us.

Windows requires very special handling for single-thread, and it is not always possible to implement non-blocking I/O on that platform for all handles. We do some very special tricks to pull this off. I wonder if this is in Boost.ASIO at all.

thanks,
BMS

Reply via email to