Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1021739
  • 博文数量: 297
  • 博客积分: 11721
  • 博客等级: 上将
  • 技术积分: 3431
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-25 10:21
文章分类

全部博文(297)

文章存档

2016年(9)

2011年(71)

2010年(137)

2009年(80)

分类: C/C++

2009-11-16 14:16:12

posix的线程有两中取消模式,立即取消和延迟取消.
立即取消是你调用pthread_cancel的时候,不管线程当前正在干什么,马上被结束掉.
延迟取消是在你调用pthread_cancel以后,线程运行到一个取消点函数的时候才会结束.
使用pthread_join函数挂起当前线程后,想取消挂起,因此试着用了 pthread_detach函数,必须把pthread_join放在pthread_join前面.
如果没有设置detach就要join, 否则线程的一些资源不会释放。


立即取消:
在线程函数里增加这样两条语句    
  //收到cancel信号后设为cancle态    
  pthread_setcancelstate(PTHREAD_CANCEL_ENABLE,   NULL);    
   
  //收到cancel信号后立即退出           
  pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS,   NULL);   
  或增加取消点
  pthread_testcancle();
阅读(463) | 评论(0) | 转发(0) |
0

上一篇:GCC编译选项

下一篇:pthread_testcancel用法

给主人留下些什么吧!~~