现在的位置: 首页 > 综合 > 正文

APUE Chapter 12笔记:Unix下线程的控制(III)

2017年12月15日 ⁄ 综合 ⁄ 共 496字 ⁄ 字号 评论关闭
因为看完了最后一段之后就懒得写笔记了,现在补上来。

线程的撤销(cancel)
调用pthread_cancel来停止一个线程,而线程有听话和不听话两种可能。如果线程的状态是PTHREAD_CANCEL_ENABLE,那么它在碰到APUE表12.14和12.15中的任何一个函数调用(cancel point)就会停止。如果状态是PTHREAD_CANCEL_DISABLE,那么它会无视CANCEL命令。
int pthread_setcancelstate(int state, int *oldstate);

如果一个线程进行一个比较长的计算等过程,而无法及时调用cancel point的函数,那么可以用
void pthread_testcancel(void);
来进行cancel测试。如果线程状态是PTHREAD_CANCLE_DISABLE的话,这段代码就当/* ... */了。

线程的cancel分两种类型,一种是PTHREAD_CANCEL_DEFERRED,就是碰到cancel point才cancel,反之,如果是PTHREAD_CANCEL_ASYNCHRONOUS的话,则是立即cancel。

抱歉!评论已关闭.