Synchronization

 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}



Subsections

willem 2010-02-03