Unix pipes define a strict and simple synchronization protocol. All producers
and consumers are serialized to use a single read and write pointer pair and
both block.
In Streamline, buffers allow other forms of group synchronization, complicating
synchronization. It has a series of synchronization methods that selectively
enable concurrent reading and writing at different data loss and performance
trade-offs. All these specializations in essence project a set of (read or write)
pointers onto a single scalar value. They differ in the scalar they affect and their
method of projection. A separate choice consists of whether or not to block when
synchronization is lost. The BMS supports both methods. By default it follows UNIX
pipe semantics. Somewhat simplified, this means blocking on a full or empty ring and
unblocking early when the other end closes the ring.
Figure 4.11:
Impact of ring- and callsize on throughput
|
![\includegraphics[width=0.7\linewidth]{figs/buffersize_redux.eps}](img66.png) |
Subsections
willem
2010-02-03