多线程问题,pthread_mutex_trylock,很简单的函数,为什么总是失败呢?请大侠指教!
// 同步锁
void *taxiMutex = NULL;
//初始化
void *knCreateMutex()
{
pthread_mutex_t mutex;
if(0!= pthread_mutex_init(&mutex, NULL)) {
perror("pthread_mutex_init");
printf("pthread_mutex_init error\n");
return NULL;
}
else
return &mutex;
}
int knMutexLock(void *obj_)
{
if(0!=(pthread_mutex_trylock((pthread_mutex_t *)obj_)))
{
perror("pthread_mutex_trylock");
printf("pthread_mutex_trylock error\n");
return -1;
}
else return 0;
}
int main()
{
taxiMutex=knCreateMutex();//初始化
knMutexLock(taxiMutex);//加锁
}
编译时报错:knCreateMutex 返回了局部变量。
问题:void *这种无类型指针与 pthread_mutex_t 这种类型怎么能够很好的兼容呢?