Also, did anyone solve their "canine challenge"? It seems to me that what they're asking for is "tee FILE... > /dev/null", but maybe I'm missing something?
<snark warning>
Perhaps the real challenge here is sticking with the team that produces incredible qunatities of code, as they put it, and will rather re-implement tee than find it. I wonder if they implemented own virtual memory with on-demand paging yet ;-)
</snark warning>
Given that their core business is data-stores that take full advantage of emerging storage technologies (such as flash), this seems like pretty relevant question.
$ tee foo.bin bar.bin baz.bin < /dev/zero
writes to all three files `at once' (in small time-slices, actually). Used GNU tee from coreutils-8.10.Perhaps OP meant several-threads-per-file level of parallelism, where number_threads > number_files?
while not EOF:
(synchrounously) read up to BUFSIZE bytes from stdin into buf
for each output file:
(synchrounously) write buf to file
(source code here: http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/tee....)All of the reads and writes are done through synchronous file apis. I don't see where you are getting one-thread-per-file (or any other kind of parallelism) there.