我必须编写一个带有互斥量表的程序。这段代码适用于cygwin,但它不适用于linux。我不明白,为什么它不起作用。谁能帮我? 提前致谢。 错误:
pub.c:16:15: error: expected expression before ‘{’ token
代码:
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
pthread_mutex_t* mutex;
int main()
{
int n;
int i;
scanf("%d", &n);
mutex = malloc(n*sizeof(pthread_mutex_t));
for (i = 0; i < n; i++)
{
mutex[i] = PTHREAD_MUTEX_INITIALIZER; // <-- Error
}
free(mutex);
return 0;
}
答案 0 :(得分:0)
你应该在这里使用pthread_mutex_init代替PTHREAD_MUTEX_INITIALIZER
pthread_mutex_init ( &(mutex[i]), NULL);
PTHREAD_MUTEX_INITIALIZER宏初始化静态互斥锁互斥锁,将其属性设置为默认值。此宏只应用于静态互斥锁,因为不会执行错误检查。