一. pthread库提供的接口函数
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void *arg); //创建一个线程
int pthread_join(pthread_t thread, void **retval);//线程等待
int pthread_detach(pthread_t thread);//线程分离
其中,pthread_create为创建线程,pthread_t *thread 是一个输入输出参数,当成功创建线程后,thread为线程的tid,atrr为线程属性,一般设置为NULL,start_routine为函数指针,其传参类型为void*,arg 为待传入参数。
当主线程程序执行完后,主线程的退出会导致整个进程退出,因此会发生其他线程未执行完任务也随着主线程退出而退出,因此可以用pthread_join和pthread_detach实现线程等待或线程分离,其中retval为输入输出参数,可以记录线程执行完后的返回值
注意到线程创建的回调函数类型必须是void*(void*) 因此,如果我们想传多个参数时必须先定义结构体再传结构体的指针,这在书写代码时造成了一定的不便,例如如果我们希望传输一个学生(id,姓名,班级)等信息传给所创造的线程只能用如下方式:
#include<iostream>
#include<string>
#include<pthread.h>
struct st