ran*_*eld 1 c linux multithreading pthreads
我正在制作一个小项目,并将其纳入更大的项目.它的作用基本上是跟踪通过将它们添加到主结构而创建的线程,主结构跟踪线程的作用(主要功能)和pthread_t id.另一个struct跟踪要传递给函数的数据以及pthread_t id存储在threads []中的元素号.它有点micky鼠标,它跳了一下但是除了什么时候杀死线程之外它都有效.我得到没有段错误和没有错误,程序完成得很好,但是当调用pthread_kill()时,线程不会被杀死(函数返回0表示没有错误并且它有效)尽管线程继续运行直到主应用程序返回.
pthread_kill()不会杀死一个线程.唯一的区别kill()是信号由指定的线程处理,而在该线程屏蔽信号时不处理(参见参考资料pthread_sigmask()).SIGTERM默认情况下,像will 这样的信号仍会终止整个过程.
如果您正在考虑pthread_exit()从信号处理程序调用,您可能应该使用pthread_cancel().
如果所有可能被取消的代码合作(或者调用它的代码在当时禁用取消),则取消是安全的.不过,大多数图书馆并不关心这一点.
更安全的方法是让线程在没有任何强制的情况下退出,例如通过向其发送特殊消息(如果线程正常处理消息).
或者,不要费心去杀任何线程,只是打电话_exit(),_Exit()或quick_exit().
| 归档时间: |
|
| 查看次数: |
12564 次 |
| 最近记录: |