gpt4 book ai didi

c - pthread_kill 不会杀死线程 C linux

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:17:03 25 4
gpt4 key购买 nike

我正在制作一个小项目,该项目将被合并到更大的项目中。基本上它所做的是通过将线程添加到主结构来跟踪创建的线程,主结构跟踪线程的作用(其主要功能)及其 pthread_t id。另一个结构跟踪要传递给函数的数据以及 pthread_t id 存储在 threads[] 中的元素编号。它有点像米奇老鼠,它会跳来跳去,但除了需要终止线程外,它都可以正常工作。我没有出现段错误,也没有错误,程序运行良好,但是当调用 pthread_kill() 时线程没有被杀死(函数返回 0 意味着没有错误并且它工作)尽管线程继续运行直到主应用程序返回。

最佳答案

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

如果您正在考虑从信号处理程序调用 pthread_exit(),您应该改用 pthread_cancel()

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

更安全的方法是不强制要求线程退出,例如通过向它发送特殊消息(如果线程正常处理消息)。

或者,不必费心杀死任何线程,只需调用 _exit()_Exit()quick_exit()

关于c - pthread_kill 不会杀死线程 C linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9345232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com