From: Philippe A. Bouchard (philippe_at_[hidden])
Date: 2003-08-12 10:15:36
Alexander Nasonov wrote:
> All of you know what is pipe and what are iostreams. In this library
> they work together.
> Writer-thread put objects into pipes while reader-thread get them
> from the pipe. Ålthough objects are copied to/from pipe, this is
> often a better alternative to object sharing because the pipe manages
> inter-thread communication for you. Thus, you can concentrate on
> domain logic rather then on threading primitives.
> Unlike OS-provided pipes that operate with bytes of data this library
> is iostream based. It means that you work with objects.
> The library doesn't use OS pipes. Pipe support is implemented by hand
> with a help of Boost.Threads. Synchronization occurs only in
> underflow, overflow, sync, open and close functions which means fast
> The library also has two capacity models: limited and unlimited. In
> the former case, if writer goes ahead of a reader it stops and waits;
> in the latter case, the writer always allocates new block of memory
> when overflow occurs.
There is another pipestream project you can take a look at:
There was also another former implementation in the Gnu Gcc lib but it was
discarded, I don't know why.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk