我有一个多线程应用程序,其中每个线程都有一个帮助线程来帮助第一个线程完成任务。我希望当线程终止(可能调用退出)时,辅助线程也终止。
我知道有可能使用exit_group
,但是这个系统调用会杀死同一组调用线程中的所有线程。例如,如果我的应用程序有 10 个线程(因此有 10 个额外的辅助线程),我希望只有线程和关联的辅助线程被终止,而其他线程继续运行。
我的应用程序专门在 Linux 上运行。
我怎么会有这种行为?
阅读有关多线程的信息,我对 Linux 中的线程组和进程组的概念有些困惑。这些术语指的是同一件事吗?准确地说,进程组(也可能是线程组)是通过以下调用之一检索到的 pid:
pid_t getpgid(pid_t pid);
pid_t getpgrp(void); /* POSIX.1 version */
pid_t getpgrp(pid_t pid); /* BSD version */