linux系统编程之线程(二)

时间:2020-12-30 14:45:58
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>

struct menber
{
int a;
char *b;
}temp={8,"zieckey"};

//线程执行函数
void *create(void *arg)
{
printf("new thread ... \n");
return (void *)&temp;
}

int main(int argc,char *argv[])
{
int error;
pthread_t tid;//线程id
struct menber *c;

//创建线程
error = pthread_create(&tid, NULL, create, NULL);

if( error )
{
printf("new thread is not created ... \n");
return -1;
}
printf("main ... \n");

//描述 :pthread_join()函数,以阻塞的方式等待tid指定的线程结束。当函数返回时,被等待线程的资源被收回。如果线程已经结束,那么该函数会立即返回。并且tid指定的线程必须是joinable的。
//参数 :tid: 线程标识符,即线程ID,标识唯一线程。retval: 用户定义的指针,用来存储被等待线程的返回值。
//返回值 : 0代表成功。 失败,返回的则是错误号。
error = pthread_join(tid,(void *)&c);

if( error )
{
printf("new thread is not exit ... \n");
return -2;
}
printf("c->a = %d \n",c->a);
printf("c->b = %s \n",c->b);
sleep(1);
return 0;
}