On 12/2/06, Chris Kuklewicz <[EMAIL PROTECTED]> wrote:
Hi, I have taken a crack at this. The best thing would be not to use the asynchronous exceptions to signal the thread that calls accept.
I'd certainly be most happy not to use asynchronous exceptions as the signalling mechanism, but how would you break out of the accept, except by receiving an asynchronous exception?
But a few minor changes gets closer to what you want. First, the main problem you claim to run into is > Except that, whoops, the "takeMVar" in the accept thread code which updates the > childrenDone" MVar is also interruptible. So now I'm getting an > interruption right where I don't want it, when I'm updating my data > structure. Short version: There is no problem because it will not become interruptible. Long version: The takeMVar unblocks exceptions only if it must stop and wait for the MVar. The MVar is only taken by this command/thread and during graceful shutdown after this thread is dead. So this MVar should never be in contention (and in theory does not *need* to be a locked MVar, and an IORef would do).
Gosh, I think you're right. _______________________________________________ Haskell mailing list Haskell@haskell.org http://www.haskell.org/mailman/listinfo/haskell