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

6 篇文章 0 订阅
因为看完了最后一段之后就懒得写笔记了,现在补上来。

线程的撤销(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。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值