pthread_mutex_t初始化错误

时间:2008-12-20 13:04:50

标签: initialization pthreads mutex

我在老虎身上使用xcode 2.4.1。当我在下面做的一切都很好。当我做的时候

pthread_mutex_t mute;
ImageMan()
{
    dibSize=0;
    mute  = PTHREAD_MUTEX_INITIALIZER;
}

我得到了这两个错误

error: expected primary-expression before '{' token
error: expected `;' before '{' token

我不知道为什么。但是,如果我做pthread_mutex_t静音= PTHREAD_MUTEX_INITIALIZER;它工作正常。为什么呢?

CNC中 我没有运行它,但这似乎编译。为什么?啊?

    pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
    mute = mutex;

2 个答案:

答案 0 :(得分:16)

PTHREAD_MUTEX_INITIALIZER是一个常量初始值设定项,仅在初始化时有效。它是一个宏,不一定会扩展为整数类型。

您的mute=mutex;无效 - 您应该使用:

pthread_mutex_init(&mute, NULL);

或者如果您动态分配互斥锁:

m = malloc(sizeof(pthread_mutex_t)));
pthread_mutex_init(m, NULL);

答案 1 :(得分:2)

mute = (pthread_mutex_t)PTHREAD_MUTEX_INITIALIZER;

这是此错误的另一种解决方案。