
Felipe Magno de Almeida wrote
Hello Vicente,
On Tue, Dec 25, 2012 at 6:28 PM, Vicente Botet <
vicente.botet@
> wrote:
Felipe Magno de Almeida wrote
Hello,
[snip - source code]
But couldn't this make double construction/double free in C++03 systems if system_category is ran concurrently?
Yes sure, this is always possible zith c++0ยท.
Not always possible. It is only possible for non-PODs. AFAIK.
Do you see a problem with this implementation?
Since it has a race-condition, I would say I see a problem, yes. More so since it is not documented.
Form a theoretical point of view yes. But in practice, which observable problems could induce the double construction? I would expect only one destruction, don`t you?
AFAIK, the normal solution for this is to use call_once.
system_category const& create_system_category() { system_category const category; return category; } void init_system_category() { create_system_category(); } once_flag init_flag = BOOST_ONCE_INIT;
system_category const& get_system_category() { boost::call_once(init_flag, &init_system_category); return create_system_category(); }
This approach would make both libraries interdependent. Best, Vicente -- View this message in context: http://boost.2283326.n4.nabble.com/system-local-static-and-threading-in-C-03... Sent from the Boost - Users mailing list archive at Nabble.com.