zoukankan      html  css  js  c++  java
  • 线程安全终止

    线程安全终止

    取消一个线程的方式是向其发送pthread_cancel信号。目标线程接收到这个信号之后会采取动作,具体的动作取决于线程开始时以下几个函数的设定:

    1)Int pthread_setcancelstate(int state,int * oldstate);

     这个函数用来设定本线程对cancel信号反应,state有两种值:PTHREAD_CANCEL_ENABLE。分别表示收到信号设置为CANCEL状态和忽略CANCEL信号继续运行。

    2)int pthread_setcanceltype(int type,int * oldtype);

    设置本线程取消时机,type取两种值:PTHREAD_CANCEL_DEFFEREDPTHREAD_CANCEL_ASYCHRONOUS,分别表示先设置一个cancel状态再运行到下一个取消点的时候取消或者立即执行取消动作,当cancel状态为enable的时候有效。

     

    使用void pthread_testcancel(void)可以设置一个取消点。只有当线程取消功能处于启用状态且取消状态设置为延迟状态时,pthread_testcancel()函数有效

     

    当然,这不可避免的设计到资源释放的问题,资源释放可以用到以下几个函数:

    Void pthread_cleanup_push(void (* routine)(void *),void * arg);

    Void pthread_cleanup_pop(int execute);

    这几个函数用来做资源释放,对于运行在两个函数之间的代码被终止(pthread_exit或者取消点),将执行pthread_cleanup_push()中所指定的清理函数。





  • 相关阅读:
    Django框架---- 信号
    算法----迷宫问题
    算法----数据结构
    算法----其他排序
    Twisted简介
    爬虫----selenium模块
    爬虫----Scrapy框架
    爬虫----requests模块
    关于电脑运行ubunut出现严重发热的问题
    基本操作命令详解
  • 原文地址:https://www.cnblogs.com/dchipnau/p/5043605.html
Copyright © 2011-2022 走看看