Bill Lam wrote:
> If I could throw my two cents in, "do not use sdasync" even
> it is available because some events will be missing under heavy
> loading.  To make matter worse, missing event does not always
> cause mistake.

If sdasync works that way in the context of TCP, then Microsoft's
implementation of TCP is severely broken.

The whole purpose of TCP is to ensure that packets are presented
to the application in sequence, with no gaps in the sequence.
If it can't do that in a timely fashion, it's supposed to
end the connection.

More specifically, the OS is not supposed to signal to the other
end that a packet has been received until it can guarantee that
the application has received that packet.

In general, operating systems are expected to have limited
space for buffers, and this is just one of the many issues
which can cause packet loss.

Put differently, sdasync should be able to drop events without
impacting the reliability of the TCP connection.  TCP means
that the OS is telling the remote side of the connection how
many bytes have been received by the application.  If the 
remote side does not receive acknowledgement of what it's
sent in a timely fashion, it's supposed to [a] send the 
information again, and [b] decrease the rate at which it
sends for this connection.

That said, do you have specific knowledge of sdasync failing
in the context of TCP?  Or, were you extrapolating from your
experiences with this sort of mechanism in some other context?

Thanks,

-- 
Raul

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to