线程控制:
在linux下的线程操作接口,都是库函数,因为linux并没有直接向上层提供线程操作的系统调用接口。
线程创建:
int pthread_create(pthread_t *tid, pthread_attr_t *attr,void*(routine)(void*),void *arg)
tid:传入一个pthread_t类型变量的空间地址,用于接收线程id-线程的操作句柄。
attr:线程属性--大部分属性不用进行设置,通常置NULL
routine:函数指针,传入线程入口函数的地址,这个线程调度运行的就是这个函数
arg:给routine线程入口函数传入的参数
功能:创建一个线程,线程运行的是routine传入的地址对应的函数
返回值:成功则返回0 失败则返回非0值
线程终止:
1.在入口函数中return(在main中return退出的不仅是线程,还有整个进程)
2.在任意位置调用接口 void pthread_exit(void*retval) ,(retval:用于获取线程退出返回值)
3.在任意位置调用接口: int pthread_cancel(pthread_t tid)(tid:指定接口的tid操作句柄)
线程的等待和分离:
等待:
int pthread_join(pthread_t tid,void **retval);
tid:是要等待退出的指定线程的tid;
retval:用于获取线程的退出返回值;
功能:等待指定线程退出,获取退出线程的返回值,回收退出线程的所有资源
分离:
int pthread_detach(pthread_t tid);
tid:需要分离的线程的tid
功能:将指定线程状态从默认的joinable设置为detach状态,表示线程退出后制动释放所有资源不需要被等待