c/c++语言开发共享pthread_kill没有杀死线程C linux

我正在制作一个小项目,将其纳入更大的项目。 它的作用基本上是跟踪通过将它们添加到主结构而创建的线程,主结构跟踪线程的作用(主要function)和pthread_t id。 另一个struct跟踪要传递给函数的数据以及pthread_t id存储在threads []中的元素号。 它有点micky鼠标,它跳了一下但是除了什么时候杀死线程它都有效。 我得到没有段错误和没有错误,程序完成得很好,但是当调用pthread_kill()时,线程不会被杀死(函数返回0表示没有错误并且它有效)尽管线程继续运行直到主应用程序返回。

    pthread_kill()不会杀死一个线程。 与kill()的唯一区别在于信号由指定的线程处理,而在该线程屏蔽信号时不处理(参见pthread_sigmask() )。 像SIGTERM这样的信号默认会终止整个过程。

    如果您正在考虑从信号处理程序调用pthread_exit() ,则应该使用pthread_cancel()代替。

    如果所有可能被取消的代码合作(或者调用它的代码在当时禁用取消),则取消是安全的。 不过,大多数图书馆并不关心这一点。

    更安全的方法是让线程在没有任何力的情况下退出,例如通过向其发送特殊消息(如果线程正常处理消息)。

    或者,不要打扰任何线程,只需调用_exit()quick_exit()quick_exit()

    来自https://pubs.opengroup.org/onlinepubs/7908799/xsh/pthread_kill.html

    与kill()一样,如果sig为零,则执行错误检查但实际上没有发送信号。

    所以以下

    pthread_kill(threads [i] .tID,0);

    实际上不会杀死线程。 您需要使用实际信号来杀死线程。 可在此处找到信号列表:

      以上就是c/c++开发分享pthread_kill没有杀死线程C linux相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/549659.html

      (0)
      上一篇 2021年1月14日
      下一篇 2021年1月14日

      精彩推荐