该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
/*linux下最常用的应该就是pthread线程库了
本教程就是关于pthread的
关于线程是什么东西我就不赘述了 百科上都有*/
#include
#include//pthread库的头文件
//声明并定义一个函数
void*function(void*data)
{
printf("start\n");
printf("function:%d\n",*(int*)(data));
printf("end\n");
return data;
}
int main()
{
pthread_t tid;
//*声明一个pthread_t类型变量
//*相当于一个线程的id
//*它在头文件中的定义是 typedef long pthread_t
int n=123;
//先不要管这货是干嘛的
pthread_create(&tid,NULL,function,&n);
/*
这个函数创建一个线程
第一个参数以指针传递,并且返回线程号
第二个参数是线程的属性设置 现在我们设置成NULL表示使用默认属性
第三个参数是一个函数指针 void*(*func)(void*) 它和我们在main()前面定义的函数的格式是一样的 现在把function作为参数传入 表示线程从这个函数开始执行 这个函数return就相当于线程结束
最后一个参数是 void* 这个指针是传递给上面那个函数的 是给用户自己定义的数据使用的 在这里我传递了一个int变量n的地址
在这个函数返回前,我们创建的线程可能已经在执行了
*/
printf("this is main()\n");
int *p;
pthread_join(tid,(void**)&p);
/*
等待一个线程的结束或者对已经结束的进程进行清理操作
第一个参数是我们要等待的线程号
第二个参数是一个 void** ,它用于接受线程的返回值
在这里是 function的返回值
*/
printf("main:%d",*p);
return 0;
}