On 28/07/13 14:36, Roman Cheplyaka wrote:
The documentation for throwTo says:

   throwTo does not return until the exception has been raised in the
   target thread. The calling thread can thus be certain that the target
   thread has received the exception. This is a useful property to know
   when dealing with race conditions: eg. if there are two threads that
   can kill each other, it is guaranteed that only one of the threads
   will get to kill the other.

I don't see how the last sentense follows. I understood it so that the
implication

   throwTo has returned => exception has been delivered

is true, but not the reverse. If my understanding is correct, then both
exceptions could be delivered without any of throwTos returning.

Perhaps this needs to be clarified. The extra information is: if a thread's next operation is a throwTo, then it may either receive an exception from another thread *or* perform the throwTo, but not both. Informally, there's no state of the system in which the exception is "in flight": it has either been delivered or not.

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