By the way, this phrase:
"We allow multiple threads to read different chunks at once by supplying each one with a distinct file handle, all reading the same file"
here:
http://book.realworldhaskell.org/read/concurrent-and-multicore-programming.html#id677193
IMHO is not correct, or at least misleading.