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