
11 Jan
2005
11 Jan
'05
8:18 p.m.
Marcin 'Qrczak' Kowalczyk wrote:
"fileRead :: File -> FileOffset -> Integer -> Buffer -> IO ()"
This is unimplementable safely if the descriptor is read concurrently by different processes. The current position is shared.
... which is terrible library design, which we should avoid if at all possible, which is one of several reasons that I want to get rid of the notion of "current position". Hence the above prototype. fileRead can be implemented in terms of OS primitives, and it's easy enough to implement a thread-safe seek/read interface on top of it. The reverse isn't true--if we provided seek/read, it would be very hard to implement fileRead safely. (Maybe that's what you were saying?) -- Ben