zoukankan      html  css  js  c++  java
  • linux高编线程-------线程的取消

    有8种方式使进程终止,其中前5种为正常终止,它们是   

    1:从 main 返回   
    2:调用 exit   
    3:调用 _exit 或 _Exit   
    4:最后一个线程从其启动例程返回   
    5:最后一个线程调用 pthread_exit   异常终止有3种,它们是   
    6:调用 abort   
    7:接到一个信号并终止   
    8:最后一个线程对取消请求做出响应 

    线程在运行的过程中经常会用到线程取消。

    /**************************
     *功能:发送一个线程取消请求
     *参数:取消的线程
     *返回值:成功返回0,失败返回非0的errnum
     * ***********************/
    int pthread_cancel(pthread_t thread);

    注意:先取消再收尸

    取消有两种状态:允许和不允许

    允许取消: 异步取消

        (默认)推迟取消: 推迟到cancel点再响应:POSIX定义的cancel点,都是可能引发阻塞的系统调用。

    设置cancel点相关函数:

    /**********设置线程是否允许被取消***********/
    int pthread_setcancelstate(int state ,int *oldstate);
    /*************选择线程取消方式***********/
    int pthread_setcanceltype(int type, int *oldtype);
    /***************取消点**************/
    void pthread_testcancel(void);

    线程分离:

    /************分离一个线程*************/
    int pthread_detach(pthread_t thread);

    无法用pthread_join() 函数收尸 

           

  • 相关阅读:
    冲刺第五天个人博客
    冲刺第四天个人博客
    典型用户及场景
    冲刺第三天个人博客
    冲刺第二天个人博客
    冲刺第一天个人博客
    第三周学习进度表
    第二周学习进度表
    webServices
    vs开发工具使用问题
  • 原文地址:https://www.cnblogs.com/muzihuan/p/5343276.html
Copyright © 2011-2022 走看看