线程取消点相关

1)取消点的位置;耗时操作、大的业务逻辑;

2)取消后的资源释放。

 

pthread_cleanup_push

 

执行取消操作存在一定的危险。大多数危险都与完全恢复不变量和释放共享资源有关。取消线程时一定要格外小心,否则可能会使互斥保留为锁定状态,从而导致死锁状态。或者,已取消的线程可能保留已分配的内存区域,但是系统无法识别这一部分内存,从而无法释放它。

 

  • 一般地,线程从启动函数返回来终止自己;
  • 当调用pthread_exit()退出线程或者调用pthread_cancel()取消线程时,线程在调用每个清理过程后也进入终止状态;
  • 清理过程又线程通过pthread_cleanup_push()注册,且尚未通过pthread_cleanup_poo()删除;
posted @ 2017-12-11 19:36  zzfx  阅读(394)  评论(0编辑  收藏  举报