方法1 pthread_create(&t_a[i],NULL,thread1,(void *)i);
#include <pthread.h> #include <stdio.h> #include <stdlib.h> #include<unistd.h> void *thread1(void *arg) { printf("In thread %ld, id = %lu\n",(long)arg,pthread_self()); } void main() { long i; int *p; printf("%ld\n",sizeof p); pthread_t t_a[6]; for(i=0;i<6;i++){ pthread_create(&t_a[i],NULL,thread1,(void *)i); } for(i=0;i<6;i++) pthread_join(t_a[i],NULL); }方法2 pthread_create(&t_a[i],NULL,thread1,(void *)&index[i]);
#include <pthread.h> #include <stdio.h> #include <stdlib.h> #include<unistd.h> void *thread1(void *arg) { printf("In thread %d, id = %lu\n",*(int*)arg,pthread_self()); } void main() { int i; int *p; printf("%ld\n",sizeof p); pthread_t t_a[6]; int index[6]; for(i=0;i<6;i++){ index[i]=i; pthread_create(&t_a[i],NULL,thread1,(void *)&index[i]); } for(i=0;i<6;i++) pthread_join(t_a[i],NULL); }