Jim Gettys writes (in the context of a discussion about asynchronous messaging):
>Here's the moral: buffering/batching can work REALLY well, but is BEST done
>at design time, and hard/painful/impossible to retrofit later.
Jim is absolutely right. I remember having a long series of design sessions on this with Phil Karlton (now dearly missed) when my group was designing the SGI VIEW debugger product line.
The two hidden costs in buffered asynchronous messaging systems is that somebody has to pay for the buffers and recovering consistency when one side or the other drops the ball is more than a little tricky. At this point, I'm fairly well convinced that asynchronous messaging is not something I want in a microkernel nucleus.
None of this, you should understand, is meant to disagree with Jim; it's more an observation about different priorities at different layers in the design.
Jonathan S. Shapiro, Ph. D.
IBM T.J. Watson Research Center
Phone: +1 914 784 7085 (Tieline: 863)
Fax: +1 914 784 7595