PS: I am still curious: does threadDelay use
the wall clock or the per-process clock (CPU time)?
And regardless of the answer - how could one obtain
the opposite behaviour? (I don't find this discussed
in the visible docs. Or am I missing something?)
I think it uses wall clock time. Proof:
*NG> System.Time.getClockTime >>= print >> GHC.Conc.threadDelay (10^7)
>> System.Time.getClockTime >>= print
Fri May 12 14:36:55 CEST 2006
Fri May 12 14:37:05 CEST 2006
(0.01 secs, 803092 bytes)
Delayed 10 secs without using CPU.
BTW: Using the proposed watchdogIO-function I can observe the following
behavior:
*NG> Util.IO.Within.withinIO 10 ( GHC.Conc.threadDelay 10000 >> print
"expensive" ) ( print "cheap" )
"expensive"
"cheap"
*NG> Util.IO.Within.withinIO 10 ( GHC.Conc.threadDelay 10000 >> print
"expensive" ) ( print "cheap" )
"expensive"
"cheap"
*NG> Util.IO.Within.withinIO 10 ( GHC.Conc.threadDelay 10000 >> print
"expensive" ) ( print "cheap" )
"expensive"
"cheap"
Uhhh, something's wrong here, *both* functions are executed...
--
-- Mirko Rahn -- Tel +49-721 608 7504 --
--- http://liinwww.ira.uka.de/~rahn/ ---
_______________________________________________
Haskell mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell