throwTo semantics
Simon Marlow
marlowsd at gmail.com
Tue Aug 13 16:54:25 CEST 2013
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
More information about the Glasgow-haskell-users
mailing list