It's not totally clear from the haddocks what the semantics are:
http://hackage.haskell.org/packages/archive/io-streams/1.0.1.0/doc/html/System-IO-Streams.html
The docs seem to say that direct access to the InputStream or OutputStream become threadsafe (peek, read, write), though this could be made more painfully clear. But how does locking multiple points within an arbitrary network of parallel, concurrentMerged streams work out?
By reading the code for concurrentMerge I infer that it always uses a unique thread to access each input, so it shouldn't require locking on its inputs. But maybe the docs could indicate how these things fit together.
It's not totally clear from the haddocks what the semantics are:
http://hackage.haskell.org/packages/archive/io-streams/1.0.1.0/doc/html/System-IO-Streams.html
The docs seem to say that direct access to the
InputStreamorOutputStreambecome threadsafe (peek,read,write), though this could be made more painfully clear. But how does locking multiple points within an arbitrary network of parallel,concurrentMerged streams work out?By reading the code for
concurrentMergeI infer that it always uses a unique thread to access each input, so it shouldn't require locking on its inputs. But maybe the docs could indicate how these things fit together.