On 01/09/2010 04:22, Edward Z. Yang wrote:

Not sure what you mean here: what's a bound FFI call?

Good point: we don’t distinguish between FFI calls that require thread
local state and which ones don’t: this might be a good thing to allow
annotating.  If we did know, then we could simply arrange for calls that
use thread-local state to run on those threads, and we would still be
able to farm out other FFI calls as necessary.

Alternatively, "interruptible" could mean "does not use thread-local state", which makes sense because in order to interrupt a call we have to run it with a disposable thread.

I'm not sure about the mechanism for making a call in another OS thread, though. It might be tricky to implement, because you have to arrange to communicate the result somehow.

A technical question about cleaning up task: when I run freeTask on the
task, I get the following error:

Foo: internal error: invalid closure, info=0xb76fb418
     (GHC version 6.13.20100823 for i386_unknown_linux)

freeTask is only used from freeTaskManager, so I suppose it’s not quite
the right thing to do, however, as far as I can tell GHC doesn’t
have a current story for freeing tasks.  How should I proceed in figuring
out the cause of this error?

Right, we don't currently free the Task structure until the end, because it caches some timing stats. This might be something we want to clean up in the future. For now, it would be polite to call workerTaskStop() at least for the cancelled Task.

Cheers,
        Simon
_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to