linux - 退出主循环也许线程还在运行

标签 linux multithreading process crash

大家好~我有一个问题让我很无聊。 有时当我退出我的程序时,还有一些线程还在运行,在Linux系统中,当我退出主循环后会导致崩溃。有什么方法可以在退出主循环时杀死所有线程吗?

最佳答案

如果您指定您选择的编程语言和线程库,将会有很大帮助。

控制这种情况(即父线程在终止前等待子线程完成)的通常方法是调用库提供的函数,通常名为 join等等

pthread 为您提供 pthread_join ,例如。

如果您通过 fork 生成进程,您应该在父进程中使用 wait 或 waitpid 来停止直到子进程完成 - 尝试 man waitpid 或查看 this .

这样你就可以通过通常的方式通知你的 child 你即将退出,等到他们结束并终止,然后干净地退出主循环。

这有帮助吗?这是最不残酷的同步终止方式,如果您想主动终止子线程,当然有其他选择(例如 pthreads 的 pthread_kill)。

关于linux - 退出主循环也许线程还在运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5457025/

相关文章:

linux - ALSA soc_pcm_open() 未被调用

C#:如果多个线程只读取它,我是否必须使 ArrayList 同步

Java:线程不会等待

c# - 使用关联的应用程序打开文件

linux - 无需登录即可在Linux中运行磁盘空间检查脚本

linux - Chef-server-ctl 重新配置/在 Chef 服务器上创建管理员用户

linux - 解密需要私钥和密码

objective-c - 在 Objective-c 中使用调度队列

javascript - 如何将输出 fork /集群进程通过管道传输到主 stdout/stderr

module - 如何在 nextflow dsl2 的同一模块中重复使用同一进程两次,但以不同的名称保存输出?