Linux下多线程传参问题

mac2025-12-11  1

方法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); }
最新回复(0)