Re: [c++-pthreads] Re: FW: RE: Re: I'm Lost
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [c++-pthreads] Re: FW: RE: Re: I'm Lost
- To: Mark Mitchell <mark@xxxxxxxxxxxxxxxx>
- Subject: Re: [c++-pthreads] Re: FW: RE: Re: I'm Lost
- From: Jason Merrill <jason@xxxxxxxxxx>
- Date: Wed, 08 Mar 2006 18:08:48 -0500
Mark Mitchell wrote:
Wil Evers wrote:
So who/where is this alledged "other side"?
IIRC, Jason Merill has also historically been sympathetic to the forced
exception mechanism, because (if I paraphrase correctly!) he feels that
it might help some code move into a threaded environment without change.
In particular, by ignoring "catch" handlers, some subset of real
programs might behave well enough, in that destructors would run to
clean things up, and the code wouldn't have to be modified to know about
thread-cancellation exceptions.
Yes. This is the choice that Ada made for handling task cancellation;
it functions like an exception except that it cannot be caught, at least
not by user code.
> However, again, if I recall correctly,
Jason was also OK with the idea that a thread could catch a cancellation
exception, but that future calls to cancellation points would cause it
to be re-canceled.
Yes. Cancellation is not just an indication of a problem like most
exceptions, it's specifically an attempt to unwind everything. There is
a lot of code out there that does catch (...), tries to do generic
recovery, and continue. iostreams does catch (...) and sets a flag
instead of propagating an exception. Neither of these situations should
cause the cancel to be discarded.
Both the Ada approach and the re-cancellation approach avoid this
problem of accidentally losing the cancellation request.
If you can interrupt cancellation, re-cancellation is implemented
trivially simply by just having the cancellation exception destructor
call 'pthread_cancel (pthread_self ())'. The sticking point is being
able to abort the cancellation in the first place, which is what Uli has
been opposed to.
As far as I remember, Ulrich is the only person who has really argued
that it is unambiguously wrong to consider the situation in which a
thread catches a cancellation exception.
I don't think he's opposed to catching it, just to doing anything that
would involve backing out of the cancellation once it's started.
Jason