Boost logo

Boost :

From: Alexander Terekhov (terekhov_at_[hidden])
Date: 2005-08-19 07:02:32


Andrey Melnikov wrote:
[...]
> > How do you cancel threads?

You use pthread_cancel() and rely on mandatory cancel delivery to
"shall occur" cancellation points. Victim threads shall also be
prepared to "may occur" delivery for optional cancellation points
and async-cancel regions (when cancellation is enabled, of course).

>
> The explanation in the FAQ doesn't explain the problem in details.
> Here's a brief example:
>
> bool f1(X x)
> {
> X * y = new X;
> // if f1() is aborted at this point
> // *y won't be deallocated
> delete y;
> return false;
> }

Your f1() is clearly async-cancel-UNSAFE as written. So what?

regards,
alexander.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk