Why is disk a special case? I have never heard that all processes under linux
wait for a disk read... The kernel most certainly does not busy wait for disks
to respond, so the only alternative is that the process that needs to wait
(and only that process) is put to sleep. In which case a second thread would
be unaffected.


Linux does not busy wait in the Kernel! (don't forget the kernel does read-ahead,
so it could be that read really does return 'immediately' and without any delay
apart from at the end of file - In which case asynchronous IO just slows you down
with extra context switches).


   Keean.


Simon Marlow wrote:

On 19 January 2005 16:58, Keean Schupke wrote:



Simon Marlow wrote:


This is what GHC does, if I understand you correctly.  The thread
running select() does so in its own OS thread, while another OS
thread runs the Haskell code.  As long as you use -threaded, that
is.  Oh, and before GHC 6.4 it was done a different way - the
scheduler used to do the select() between running Haskell threads.

Cheers,
        Simon




So this means even though the IO calls block, the other Haskell
threads (when run with -threaded) keep running?



Yes, unless the IO is to/from disk on a Unix system.

Cheers,
Simon



_______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to