The correct way to implement timeout in GHC 5.00 is below. This should
really be in a library somewhere.
This implementation works for GHC's current blocking semantics for
throwTo, but if we change the semantics of throwTo to match the
asynchronous exceptions paper
Mon, 23 Apr 2001 15:36:09 +0100, Simon Marlow [EMAIL PROTECTED] pisze:
The correct way to implement timeout in GHC 5.00 is below. This should
really be in a library somewhere.
IMHO unique exceptions should be factored out and available in a
standalone way.
--
__( Marcin Kowalczyk *
timeout n a = parIO (do { r - a; return (Just r) })
(do { threadDelay n; return Nothing })
oh, I this looks better (to me) since it doesn't use exceptions!
does parIO kill the `other' thread?
still I don't find parIO (in ghc-4.08), in what module is it?
--
--
OK, I was being a bit stupid this morning.
Now I see that `parIO' is not in the ghc libs,
but programmed explicitely in the `Tackling the awkward sqaud' paper.
http://research.microsoft.com/~simonpj/papers/marktoberdorf.htm
--
-- Johannes Waldmann http://www.informatik.uni-leipzig.de/~joe/
what is the Right Way to impose a timeout condition on IO actions?
the GHC manual says ( http://www.haskell.org/ghc/docs/5.00/set/select.html )
"use threadDelay and asynchronous exceptions". When I do this:
timed :: Int - IO a - IO a
timed d action = do
let timer = do
Wed, 18 Apr 2001 14:52:12 +0200 (MET DST), Johannes Waldmann
[EMAIL PROTECTED] pisze:
it seems to work, but how do I turn off the "Fail: thread killed" messages?
import Exception
t - block $ forkIO $ catchJust asyncExceptions
(unblock timer)
(\_ - return ())
Perhaps the
Thank you, Marcin.
Your reply seems to imply that the structure
of the program I posted was basically OK?
A slightly related point, I was having difficulties with TimeDiff
values - I got negative tdPicosecs sometimes,
and some functions (show) even dumped core.
Are such problems known (I am
On Wed, Apr 18, 2001 at 21:36:04 +0200, Johannes Waldmann wrote:
A slightly related point, I was having difficulties with TimeDiff
values - I got negative tdPicosecs sometimes,
and some functions (show) even dumped core.
Are such problems known (I am using a binary ghc-4.08)?
For the
Johannes Waldmann writes:
| Thank you, Marcin.
|
| Your reply seems to imply that the structure
| of the program I posted was basically OK?
Another way appears as an example in Tackling The Awkward Squad (in
the Using Asynchronous Exceptions section). It's a bit more liberal
in its use of