线程概念
每个线程都包含有表示执行环境所必需的信息(线程ID
,一组寄存器值,栈,调度优先级,策略,信号屏蔽字,errno
,线程私有数据).进程的可执行程序代码,全局内存,堆,栈,文件描述符对进程内所有线程均可见.
线程标识
int pthread_equal(pthread_t tidl, pthread_t tid2);
pthread_t pthread_self(void);
线程创建
int pthread_create(pthread_t *restrict tidp,// 获取线程ID
const pthread_attr_t *restrict attr, void *(*start_rtn)(void*), void *restrict arg);
线程退出
(1). 从处理函数返回
(2). 被同进程的其他线程取消
(3). pthread_exit
void pthread_exit(void *rval_ptr);
// 等待指定线程停止/终止
int pthread_join(pthread_t thread, void **rval_ptr);
// 取消同一进程内某线程--提出请求,然后返回
int pthread_cancel(pthread_t tid);
// 分离线程
int pthread_detach(pthread_t tid);
对未分离线程,可调pthread_join
以获取线程退出状态,回收其资源.对分离的线程,线程终止/停止时,关联资源也自动释放.不可对其用pthread_join
.