
On Tue, 31 Aug 2010 15:13:22 +0200, Ilya Sokolov <ilyasokol@gmail.com> wrote:
[...]As a user of the library, I'm not interested which pipes are used for I/O - anonymous or named. IMO it is better to provide exactly one stream behavior which supports both sync and async I/O. On windows it would be implemented with named pipe and UuidCreateSequential (as it "tends to be slightly faster than the UuidCreate" [1]). On POSIX it would be implemented with anonymous pipe.
I could add another type (asnyc_pipe?) which is set to the minimum required pipe type on a platform? The advantage of pipe and named_pipe is though that many developers know them and don't need to read first what eg. an async_pipe is. As this is a problem only for Windows developers I'm not sure either why developers on other platforms should learn new concepts. Adding another type like async_pipe could be a compromise though?
IMO anonymous and named pipes should be in the Boost.Interprocess library.
That would be OK for me although it wouldn't help much unless those types are designed similar to the behavior types in Boost.Process (derived from a parent class and providing methods like get_child_end() and get_parent_end()). Boris