On Wed, 19 Feb 2003, Alexander Terekhov wrote: > That means that I've figured out whom do you mean... > > "Original-To: Gennadiy Rozental <[EMAIL PROTECTED]>" > > ...from the "Original-To"-in-the-headers-to-your-posting-here.
Oh sorry. I really hate forced reply-to. The message was directed at Gennadiy Rozental but I CCed it to the boost mailing list. > Kevin Atkinson wrote: > > > > > your Mutex class offers undefined behavior; > > > you really can NOT "replicate" a {pthread_mutex_t} mutex. > > > > Where do I replicate a mutex? > > ".... > static const pthread_mutex_t MUTEX_INIT = PTHREAD_MUTEX_INITIALIZER; > > class Mutex { > pthread_mutex_t l_; > public: > Mutex() : l_(MUTEX_INIT) {}" > ^^^^^^^^^^^^^^ I believe this behavior is well defined. PTHREAD_MUTEX_INITIALIZE is a const initializer. Unfortunately for Linux threads it is defined as a traditional C struct initializer, "{ ... }". So l_(PTHREAD_MUTEX_INITIALIZER) will not work. Thus I simply make a copy of it in MUTEX_INIT and use that constant to initialize l_. If it is not specifically allowed in the POSIX standard it should be. I can not think of a situation where this will cause a problem. If i was assigning MUTEX_INIT to an active mutex then yes that would be bad, but I am not here as I am simply initializing it. If it bothers you I can use a less efficient initializer: Mutex() {pthread_mutex_init(&l_, 0);} But this may involve a function call. --- http://kevin.atkinson.dhs.org _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost