线程又称为轻量级进程,本质仍是进程(在linux环境下)
进程:独立地址空间,拥有PCB 线程:也有PCB,但是没有独立的地址空间,是共享进程地址空间
在Linux下: 线程:是最小的执行单位 进程:是小的分配资源单位
线程间共享全局变量
pthread_self函数 获取线程ID
pthread_t pthread_self(void);返回值 成功:0 失败:无 线程ID:pthread_t类型,本质:在Linux下为无符号整数(%lu),其他系统中可能是结构体实现 线程ID:是进程内部,识别标志。(两进程间,线程ID允许相同)
pthread_creat函数 创建一个新线程
int pthread_create (pthread_t * tidp, const pthread_attr_t * attr, void * (*start_rtn)(void*), void *arg);返回值 成功:0 失败:错误号
参数 参数1:返回的线程ID 参数2:设置线程属性,通常为NULL 参数3:线程要运行的函数 参数4:运行函数的参数
pthread_exit函数 将调用该函数的单线程退出
void pthread_exit(void *retval)参数 参数1:线程结束时的返回值
pthread_join函数 阻塞等待线程退出,获取线程退出状态
void pthread_join(pthread_t th,void **thread_return)参数 参数1:线程ID 参数2:储存线程结束状态
返回值 成功:0 失败:错误号
pthread_detach函数 实现线程分离
int pthread_detach(pthread_t th)参数 参数1:线程ID
返回值 成功:0 失败:错误号
注意:pthread_detach和pthread_join两个函数不能同时使用 在实现线程分离时,还可以采用配置线程的属性来实现线程的分离
pthread_cancel函数 取消线程
int pthread_cancel(pthread_t th)参数 参数1:线程ID
返回值 成功:0 失败:错误号
在 pthread_create 函数的第二个参数——线程的属性。将该值设为 NULL,也就是采用默认属性,线程的多项属性都是可以更改的。这些属性主要包括绑定属性、分离属性、堆栈地址、堆栈大小、优先级。其中系统默认的属性为非绑定、非分离、缺省1M 的堆栈、与父进程同样级别的优先级。
对属性初始化: 设置绑定属性: 设置线程分离属性: 设置线程优先级: 获取线程优先级:
pthread_exit:仅将调用该函数的单线程退出 return:返回到调用者那里 exit:退出该进程