我在确定主要警告的原因时遇到了麻烦: 传递不兼容的指针类型
'void *(int)' to parameter of type 'void *(*)(void *)'[-Wincompatible-pointer-types]
...pthr`ead_create(&philosophers[k], &tattr[k], *philosopherSeat, (void *)(k));
和
/usr/include/pthread.h:313:11: note: passing argument to parameter here
void *(*)(void *), void * __restrict);
我试图重新定义主体中的方法以适合错误的标准,但这没有用。
int main() {
int k;
for (k = 0; k < Philo; ++k) {
pthread_mutex_init(&forks[k], 0);
}
for (k = 0; k < Philo; ++k) {
pthread_create(&philosophers[k], &tattr[k], philosopherSeat, (void *)(k));
}
for (k = 0; k < Philo; ++k) {
pthread_join(philosophers[k], 0);
}
return
我的philosopherSeat方法如下:
void philosopherSeat(int seat) {
while (1) {
think(seat);
grab(seat);
eat(seat);
drop(seat);
}
}
和“哲学家”是一种方法,定义为:
pthread_t philosophers[Philo];
我希望该程序运行无错误。