[c++-pthreads] Re: cancellation points report failure

Dave Butenhof David.Butenhof at hp.com
Mon Jan 5 17:39:09 UTC 2004


Alexander Terekhov wrote:

>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);
>}
>  
>
This is all way off topic, but what's your point here, Alexander?

Are you intending to suggest that pthread_setcanceltype() be made a 
guaranteed cancellation point, so your substitution would have the same 
effect as the current pthread_testcancel()... or that the definition of 
pthread_testcancel() (using the current semantics of 
pthread_setcanceltype()) should be allowed to ignore a pending cancel? ;-)

-- 
/--------------------[ David.Butenhof at hp.com ]--------------------\
| Hewlett-Packard Company       Tru64 UNIX & VMS Thread Architect |
|     My book: http://www.awl.com/cseng/titles/0-201-63392-2/     |
\----[ http://homepage.mac.com/dbutenhof/Threads/Threads.html ]---/




More information about the c++-pthreads mailing list