线程概念
每个线程都包含有表示执行环境所必需的信息
[线程ID,一组寄存器值,栈,调度优先级,策略,信号屏蔽字,errno,线程私有数据]
进程的可执行程序代码,全局内存,堆,栈,文件描述符对进程内所有线程均可见.
线程标识
int pthread_equal(pthread_t tidl, pthread_t tid2);
pthread_t pthread_self(void);
线程创建
int pthread_create(
pthread_t *restrict tidp,
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.