Re: [c++-pthreads] Re: cancellation points report failure
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [c++-pthreads] Re: cancellation points report failure
- To: David Abrahams <dave@xxxxxxxxxxxxxxxxxxxx>
- Subject: Re: [c++-pthreads] Re: cancellation points report failure
- From: Alexander Terekhov <boo@xxxxxxxxxxx>
- Date: Tue, 30 Dec 2003 14:58:29 +0100
David Abrahams wrote:
[...]
> Of course it's not safe. That's my point, sort of: if you use
> synchronous cancellation, you have to give up on any *guarantee* that
> the thread will be cancelled, so we shouldn't be considering measures
> that take heroic steps to try to ensure it. If you want to guarantee
> that cancellation happens, you have to do something unsafe.
Note that the use of POSIX asynchronous cancellation (I mean the
presence of async-cancel{-safe} regions on the execution path) does
NOT guarantee thread termination (cancel request delivery) at all.
Conforming implementations are free to ignore it completely, so to
speak. I wish the standard would define pthread_testcancel() "in
terms" of an empty async-cancel region (and it would also provide
async-cancel-safety for pthread_testcancel() itself):
void pthread_testcancel() { /* mandatory shall occur semantics */
int oldtype;
pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, &oldtype);
pthread_setcanceltype(oldtype, &oldtype);
}
regards,
alexander.