Linux:返回线程退出时的数据

static float area;类型为float ;因为pthread_exit返回值为 void *,相应的area也要转变为 float *,所以为float * &area 

  pthread_join(id,(void **)&area);      等待线程结束

gcc 文件名  -pthread                     连接动态库

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>

void *task(void *arg)
{

    float *r=(float *)arg;
    static float area;
    area=3.14*(*r)*(*r);
    printf("%f\n",area);

    pthread_exit((void*)(&area));


}

int main()
{
    pthread_t id;
    
    float *area=NULL;
    float t=3;
    //创建线程
    int res = pthread_create(&id,0,task,(void *)&t); 
 //   int res = pthread_create(&id,0,task,&t); //void *可以接受任何类型的数据
    if(res){
        printf("%s\n",strerror(res));
        //exit(-1);
    }

    sleep(1);

     pthread_join(id,(void **)&area);

     printf("%f\n",*area);


    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_41215479/article/details/81506495