[Haskell-cafe] Re: Hugsvs GHC (again)was: Re: Somerandomnewbiequestions

David Roundy droundy at abridgegame.org
Fri Jan 21 07:49:29 EST 2005


On Fri, Jan 21, 2005 at 12:42:56PM +0000, Keean Schupke wrote:
> Ben Rudiak-Gould wrote:
> >If you're reading from a random-access file, there's no way it can 
> >tell you when the file data is buffered, because it doesn't know which 
> >part of the file you plan to read. The OS may try to guess for 
> >readahead purposes, but select()'s behavior can't depend on that guess.
>
> But surely it does! read only reads the next block... to skip randomly
> you must seek... therefore the following sequence does this:
> 
>       seek
>       select
>       read
> 
> The select should block until one disk block from the file is in memory,
> read is defined such that it will return if some data is ready even if it
> is not as much as you requested.  So in this case if you ask for a
> complete file, you may just get one block... or more.
>
> In other words the API restricts reads to the 'next' block - so seek
> knows which block needs to be read into memory...

Wouldn't select always fail, since the block would never be read into
memory until you call read?
-- 
David Roundy
http://www.darcs.net


More information about the Haskell-Cafe mailing list