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