[c++-pthreads] Re: thread-safety definition
Dave Butenhof
David.Butenhof at hp.com
Tue Jan 13 12:07:24 UTC 2004
Ted Baker wrote:
>>... the problem isn't with the model, but rather with the effect of that
>>model on existing code that all-too-casually and agressively eats
>>exceptions it doesn't understand. I think there are vanishingly few
>>circumstances where a blind catch(...) without an unconditional re-throw
>>should be considered "legitimate". If you don't completely understand
>>what an exception means, you cannot claim to have completely recovered,
>>and therefore cannot reasonably finalize propagation. (And when you
>>catch anonymously, you can't possibly understand what they mean since
>>you can't even identify them.) On the other hand, regardless of whether
>>the semantics are meaningful or reasonable, the syntax is legal and
>>apparently (unfortunately) in common use, so I can't dispute that you
>>need to consider that.
>>
>>
>This problem could be eliminated by specifying that cancellation
>is a special case, that cannot be caught by catch(...), i.e., that
>it can only be caught by a handler that names it explicitly, or that
>it cannot be caught at all.
>
>
Yes; that's been considered in the past discussions. Along with many
other alternatives. (The same had been proposed for DCE/C exceptions
reporting SIGSEGV and other "hardware" failures.) Generally, most people
end up thinking that's a little too syntactically asymmetric; there are
uses of catch(...) that really do need to isolate a subsystem by
catching everything, and breaking that model seems extreme. But it's
also true that might be the lesser of two evils, since it should be
uncommon. And so the argument sways back and forth, thus far without
authoritative resolution. I've been debating some of these exact issues
with various people since threading became common enough that C++ people
wanted to use it, armed with their newly defined exception model that
actually worked on some of the common implementations of C++. (Yeah,
that long ago.)
The problem, of course, is that everyone and nobody is "right" -- and
it's hard to converge on one middle ground without someone suddenly
realizing, "but then THAT wouldn't work". And then again, since the C++
standard committee was never even peripherally involved before, everyone
knew that it was little more than idle speculation.
--
/--------------------[ 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