大家好~我有一个问题让我很无聊。 有时当我退出我的程序时,还有一些线程还在运行,在Linux系统中,当我退出主循环后会导致崩溃。有什么方法可以在退出主循环时杀死所有线程吗?
最佳答案
如果您指定您选择的编程语言和线程库,将会有很大帮助。
控制这种情况(即父线程在终止前等待子线程完成)的通常方法是调用库提供的函数,通常名为 join 或 等等。
pthread 为您提供 pthread_join ,例如。
如果您通过 fork 生成进程,您应该在父进程中使用 wait 或 waitpid 来停止直到子进程完成 - 尝试 man waitpid 或查看 this .
这样你就可以通过通常的方式通知你的 child 你即将退出,等到他们结束并终止,然后干净地退出主循环。
这有帮助吗?这是最不残酷的同步终止方式,如果您想主动终止子线程,当然有其他选择(例如 pthreads 的 pthread_kill)。
关于linux - 退出主循环也许线程还在运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5457025/