Proposal: System.Timeout module for base

Simon Marlow simonmarhaskell at gmail.com
Thu Feb 15 05:42:40 EST 2007


Bulat Ziganshin wrote:
> Hello Simon,
> 
> Thursday, February 1, 2007, 12:46:29 PM, you wrote:
> 
>> Any other suggestions?
> 
> may be, we can raise exception in foreign language? at least for
> 'safe' calls. i.e., we establish in RTS signal handler. this handler
> checks whether we are performing safe call and if so - raise
> language-specific exception... hmm, if that's possible

There's no way to raise an exception in C, in general.

> btw, how about using for *Haskell* code *default* signal handler that
> raise Haskell exception? i think that using signal handlers to process
> OS-generated events is just legacy from the C days. i.e. 'main'
> should be called by RTS inside code like this:
> 
>   mainThread <- myThreadId
>   let onBreak event = do
>         throwTo mainThread BreakException
>   bracket (installHandler$ Catch onBreak) (installHandler) $  \oldHandler -> do
>     main
> 
> (of course, this handles only ^Break and only on Windows)
> 
> among other things, this should make signal handling portable between
> Win/Unix

Yes, we've discussed this in the past (e.g. there was a thread about this on the 
haskell-prime list).  I'm definitely in favour of doing something along these lines.

Cheers,
	Simon


More information about the Libraries mailing list