[Haskell-cafe] How to ensure code executes in the context of a specific OS thread?

Simon Marlow marlowsd at gmail.com
Wed Jul 6 21:52:31 CEST 2011


On 06/07/11 17:14, David Barbour wrote:
>
>
> On Wed, Jul 6, 2011 at 8:09 AM, Simon Marlow <marlowsd at gmail.com
> <mailto:marlowsd at gmail.com>> wrote:
>
>     On 06/07/2011 15:42, Jason Dagit wrote:
>
>         How can I make sure my library works from GHC (with arbitrary
>
>         user threads) and from GHCI?
>
>     Right, but usually the way this is implemented is with some
>     cooperation from the main thread. [...] So you can't just do this
>     from a library - the main thread has to be in on the game. I suppose
>     you might wonder whether the GHC RTS could implement runInMainThread
>     by preempting the main thread and running some different code on it.
>       [...]
>
>
> I think the real issue is that GHC has a different behavior than GHCi,
> and I think this causes a lot of difficulties for people working on GUI
> and other FFI integration.
>
> Perhaps it would be possible to reverse the default roles of threads in
> GHCi: the main thread run user commands, and a second bound thread will
> process user interrupts and such.

Well, GHCi has no main, so it doesn't seem surprising (to me) that it's 
different.

However, if -fno-ghci-sandbox doesn't have any drawbacks we could just 
make it the default.  I don't actually remember why we run each 
statement in a new thread, I think it just seemed like a prudent thing 
to do.

Cheers,
	Simon



More information about the Haskell-Cafe mailing list