2021-10-02

linux学习—线程

线程回收

方法1:在创建线程的时候通过设置pthread_create函数的第二个参数将线程设置为detach状态
方法2:在主线程中调用pthread_join来等待子线程退出
方法3:在主线程或子线程中调用pthread_detach函数设置线程的detach状态
(注意:detach状态下的线程由系统负责释放资源,此状态下的线程pthread_join等待不到,但是一旦阻塞在pthread_join函数中,此时设置子线程detach状态不能立马让主线程pthread_join解除阻塞状态)

线程返回值

线程处理函数放回值是void但是可以通过强制转换(void *)来返回值,由pthread_join第二个参数捕捉,而pthread_join返回值表示线程的状态。

线程取消和线程清理

主线程或其他线程可以通过调用pthread_cancel取消某个线程的执行,子线程可以通过函数pthread_setcancelstate设置是否接受线程取消,也可以通过pthread_setcanceltype设置线程是立即取消还是延迟取消(延迟取消函数很多,一般不采用)。
设置线程清理函数后,线程取消、pthread_exit()、return(手册上说不会调用)时都会根据pthread_cleanup_push压栈的逆序调用线程清理函数

上一篇:[ActionScript 3.0] AS3.0 动态加载显示内容


下一篇:pthread_join和pthread_detach函数