Boost logo

Boost :

From: Darryl Green (green_at_[hidden])
Date: 2002-08-28 20:27:48


> -----Original Message-----
> From: Alexander Terekhov [mailto:terekhov_at_[hidden]]
> Sent: Wednesday, 28 August 2002 11:19 PM
> To: boost_at_[hidden]
> Subject: [boost] Re: Boost.threads: interthread exceptionconveyance
>
>
>
> Darryl Green wrote:
> [...]
> > Screw up terminate()? This is where I don't understand your
> posts - I can't
> > see that there is anything defined about what happens after
> the call (except
> > that it won't return) so how can it be "screwed up"?
>
> ISO/IEC 14882:1998(E), Pg. 345:
>
> "2 Required behavior: A terminate_handler shall terminate
> execution of the program..."
> ^^^^^^^^^^^^^^^^^
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

The standard afaik makes no distinction between program and process -
because it doesn't deal with (allow?) MT programs. How to deal with this in
an MT case would seem to be contentious. Terminating the thread is the least
that needs doing. Terminating the whole process is the most that needs
doing.

>
> "void terminate();
>
> 1 Called by the implementation when exception handling must
> be abandoned for
>
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>
> any of several reasons (15.5.1). May also be called
> directly by the program. ..."

Ok - I see your point on this one. It (the "abandoned" word) could well be
interpreted as meaning that any post terminate unwind (exception handling)
isn't required to be possible/work. If this interpretation is correct it
suggests (to me at least) that terminate() handlers are almost completely
useless in C++? I'm not a language lawyer so I'll pass on proferring any
opinion on the correct interpretation.

>
>
> regards,
> alexander.
>
>
> _______________________________________________
> Unsubscribe & other changes:
> http://lists.boost.org/mailman/listinfo.cgi/boost
>


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