But what does that mean? I mean, if two threads call read on a pipe reader in parallel, who gets the first chunk of the pipe data? It will just be essentially random, with no control of how much data is actually read. I can't see how this would ever be useful, but sure, i can throw in some locks to make it safe.