Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > Programming Threads > Re: POD functio...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 14 of 19 Topic 4068 of 4146
Post > Topic >>

Re: POD function static initialization from function return, thread

by Brian Cole <coleb2@[EMAIL PROTECTED] > Oct 7, 2008 at 11:31 AM

> The guarantee for local statics is not quite as strict.
>
> C++ Standard 6.7p4: "A local object of POD type (3.9) with static
> storage duration initialized with constant-expressions is initialized
> before its block is first entered. "
>
> Every compiler I've seen does this (for PODs only) by initializing
> before the program begins, with constants in the data
> segment. Non-PODs are initialized "the first time control p*****
> through its declaration", which is usually unsynchronized, and
> is therefore dangerous with multiple threads.

So that begs the question of whether static values in initialization
lists are done before first entry into the function. I prefer the
former idiom against the latter, but the latter appears to be "more
guaranteed" to be thread-safe:
class Mutex
{
  pthread_mutex_t _mutex;
  Mutex() : _mutex(PTHREAD_MUTEX_INIT) {}
};
void Foo()
{
  static Mutex mutex;
}

The following appears to always be safe.
class Mutex
{
  pthread_mutex_t _mutex;
};
#define MUTEX_INIT PTHREAD_MUTEX_INIT

void Foo()
{
  static Mutex mutex = MUTEX_INIT;
};

Am I expecting too much out of my compilers?

-Brian
 




 19 Posts in Topic:
POD function static initialization from function return, thread
Brian Cole <coleb2@[EM  2008-10-03 15:07:52 
Re: POD function static initialization from function return, thr
Thomas Richter <thor@[  2008-10-04 11:02:01 
Re: POD function static initialization from function return, thr
"Chris M. Thomasson&  2008-10-04 04:51:49 
Re: POD function static initialization from function return, thr
Thomas Richter <thor@[  2008-10-04 15:15:57 
Re: POD function static initialization from function return, thr
"Chris M. Thomasson&  2008-10-04 18:34:18 
Re: POD function static initialization from function return, thr
Anthony Williams <anth  2008-10-06 14:13:37 
Re: POD function static initialization from function return, thr
Thomas Richter <thor@[  2008-10-07 04:57:53 
Re: POD function static initialization from function return, thr
Anthony Williams <anth  2008-10-07 08:05:35 
Re: POD function static initialization from function return, thr
Thomas Richter <thor@[  2008-10-08 01:16:48 
Re: POD function static initialization from function return, thr
Hallvard B Furuseth <h  2008-10-06 19:42:02 
Re: POD function static initialization from function return, thr
David Schwartz <davids  2008-10-07 11:11:24 
Re: POD function static initialization from function return, thr
Thomas Richter <thor@[  2008-10-08 01:20:28 
Re: POD function static initialization from function return, thr
Anthony Williams <anth  2008-10-08 08:18:27 
Re: POD function static initialization from function return, thr
Brian Cole <coleb2@[EM  2008-10-07 11:31:54 
Re: POD function static initialization from function return, thr
Anthony Williams <anth  2008-10-08 08:13:53 
Re: POD function static initialization from function return, thr
David Schwartz <davids  2008-10-08 19:47:13 
Re: POD function static initialization from function return, thr
Thomas Richter <thor@[  2008-10-11 01:44:35 
Re: POD function static initialization from function return, thr
David Schwartz <davids  2008-10-08 19:50:33 
Re: POD function static initialization from function return, thr
David Schwartz <davids  2008-10-10 21:24:11 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Sat Nov 22 9:22:07 CST 2008.