Excerpts from Simon Marlow's message of Tue Aug 31 05:02:13 -0400 2010: > I think the idea of annotating interruptible calls should be good > enough. Simple blocking system calls like "read" can all be annotated > as interruptible without any problems. Also, pthread_cancel() provides > ways to control when cancellation can occur - a thread can say whether > it allows cancels at any time or only at cancel points, so that will > allow critical sections to be protected, and allow more complicated > foreign calls to be made interruptible too.
Gotcha. > > It seems to me that the obvious thing to do is only allow bound FFI calls > > to run on bound threads. What goes wrong with this approach? Is the > > waste of threads too severe? > > 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. 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? Cheers, Edward _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users