• 线程安全终止


    线程安全终止

    取消一个线程的方式是向其发送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()中所指定的清理函数。





  • 相关阅读:
    其实那女子根本就不是在三楼死的
    ARX工程必须使用release模式编译
    解决64bit不能连接access的问题
    bootstrap例子
    bootstrap登录界面
    Bootstrap3.0入门学习系列教程
    CentOS(Linux)中解决MySQL乱码
    linux yum命令详解
    CentOS yum 安装 Apache + PHP + MySQL
    Centos下配置php环境
  • 原文地址:https://www.cnblogs.com/dchipnau/p/5043605.html
Copyright © 2020-2023  润新知