#include<stdio.h> #include<stdlib.h> #include<string.h> #include<pthread.h> char message[32]="Hello World!"; void *thread_function(void *arg) { printf("thread_function is running, argument is %s\n",arg); pthread_exit("this is return value of thread_function\n"); } int main(int argc,char *argv[]) { pthread_t a_thread; void *p; void **thread_result = &p;不赋值 它的*thread_result是非法的, if( pthread_create(&a_thread, NULL , thread_function ,(void *)message ) < 0 ) { perror("fail to pthread_create:"); exit(-1); } printf("waiting for thread to finish\n"); if( pthread_join( a_thread ,thread_result ) < 0) 在这里面将返回值赋给thread指向的一级指针;若thread未初始化,那么它指向的一级指针是非法的(不存在的)给一级指针赋值更是非法的 这里还可以传&p 注意两边的类型要一样 { perror("fail to pthread_join:"); exit(-2); } puts( *(char **) (thread_result)); return 0; }
pthread_join多线程中关于一个二级指针
最新推荐文章于 2024-09-18 21:19:33 发布