[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[LC++]Why doesn't PTHREAD_MUTEX_INITIALIZER work my constructor?
Hello,
I have created a class that contains a phtread mutex that I want
to initialize in the class constructor.
If I use:
mutex = PTHREAD_MUTEX_INITIALIZER;
in the class contructor I get a compilation error. If I use:
pthread_mutex_init (&mutex, NULL);
it works.
Example:
========== Thread.h: =============
#ifndef TRY_H
#define TRY_H
#include <pthread.h>
class Threads {
private:
pthread_mutex_t mutex;
long somevar;
public:
Threads ();
int lock ();
int unlock ();
};
#endif
========== End Thread.h ===========
========== Start Thread.cc =========
#include "Threads.h"
Threads::Threads ()
{
// This return a compilation error of:
// Threads.cc: In method `Threads::Threads()':
// Threads.cc:6: parse error before `{'
//
//mutex = PTHREAD_MUTEX_INITIALIZER;
// This works.
pthread_mutex_init (&mutex, NULL);
}
int Threads::lock ()
{
return (pthread_mutex_lock (&mutex));
}
int Threads::unlock ()
{
return (pthread_mutex_unlock (&mutex));
}
========== End Thread.cc =========
Why is that? Does it have to do with the fact that
the mutex is being initialized at runtime instead
of at the time of compilation? If that is the case
why am I getting a syntax error and some kind of
linking error?
System:
Slackware 8.1
g++ 2.95.3
glibc 2.2.5
Thanks
David Filion