0
我正在尝试创建多个线程并为餐饮哲学家的问题传递不同的值给每个线程。但我收到此错误:在餐饮哲学家的算法中将信息传递给多个线程
warning: cast to pointer from integer of different size
这里是我的代码:
pthread_mutex_t mutex;
pthread_cond_t cond_var;
pthread_t philo[NUM];
int main(void)
{
int i;
pthread_mutex_init (&mutex, NULL);
pthread_cond_init (&cond_var, NULL);
//Create a thread for each philosopher
for (i = 0; i < NUM; i++)
pthread_create (&philo[i], NULL,(void *)philosopher,(void *)i); // <-- error here
//Wait for the threads to exit
for (i = 0; i < NUM; i++)
pthread_join (philo[i], NULL);
return 0;
}
void *philosopher (void *num)
{
//some code
}
pthread_create()需要一个指针而不是int。 – 2501 2014-11-21 03:19:55
我改变了pthread_create(&philo [i],NULL,(void *)philosopher,(void *)i);到pthread_create(&philo [i],NULL,(void *)philosopher,(int *)i);仍然没有工作..... – user1435077 2014-11-21 03:36:47
你为什么将'philosopher'投给'void *'?这是错误的类型。 – 2014-11-21 03:44:09