Boost logo

Boost Users :

From: Daniel Krügler (dsp_at_[hidden])
Date: 2005-08-30 02:34:24

Howard Hinnant wrote:
> On Aug 29, 2005, at 3:47 PM, Peter Dimov wrote:
>>I haven't studied the threadmon code in detail, though. It might be
>>to destroy the threadmon mutex safely at some point during shutdown.
> I haven't studied threadmon either. But from the sounds of it, you may
> want to consider a "phoenix" singleton, nicely documented in Andrei
> Alexandrescu's MC++D. One hitch to get a working phoenix singleton is
> to have a working atexit function (and I mean really working
> correctly). There was a lwg dr report on it:
> which has now received TC status, meaning it is a normative part of the
> C++03 standard. I have no information on how well the various
> platforms conform to the standard in this regard (it can be tested for
> though).
> The idea is fairly simple. The singleton factory keeps state that
> tells it whether the singleton is constructed or not. When the
> singleton gets constructed, it registers a "destructor" with atexit.
> If after the atexit runs the destructor, the singleton is needed again,
> then it recreates itself, and re-registers with atexit. A correctly
> working atexit will properly run this newly registered function as it
> continues to process the atexit chain.

Interestingly a more recent report from Plauger - but still open -
recommends a contradictory advice (at least as far as I understand it), see

Greetings from Bremen,

Daniel Krügler

Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at