C 如何停止产生多个线程的进程

C 如何停止产生多个线程的进程,c,multithreading,C,Multithreading,我有一个进程产生了多个线程。现在,要停止并退出进程,我可以使用\u exit(0)。但是这能处理所有线程的正确终止吗?有什么方法可以杀死进程(进程本身)并处理其所有线程的正确终止。从技术上讲,在程序中的任何地方使用exit()或\u exit()并不意味着优雅的终止,终止时的程序输出也不可预测。另外,我们也来看看比较 因为没有语言标记,所以我将使用伪代码(可能是C++11)详细说明这个问题。从技术上讲,这是一个语言不可知的问题。对于不同的编程语言,线程API或多或少是相同的 下面是一个简单的进程

我有一个进程产生了多个线程。现在,要停止并退出进程,我可以使用
\u exit(0)
。但是这能处理所有线程的正确终止吗?有什么方法可以杀死进程(进程本身)并处理其所有线程的正确终止。

从技术上讲,在程序中的任何地方使用
exit()
\u exit()
并不意味着优雅的终止,终止时的程序输出也不可预测。另外,我们也来看看比较

因为没有语言标记,所以我将使用伪代码(可能是C++11)详细说明这个问题。从技术上讲,这是一个语言不可知的问题。对于不同的编程语言,线程API或多或少是相同的

下面是一个简单的进程(
p
)示例,它有两个线程(
T1
T2
)。大概是这样的:

   P
  / \
 /   \
T1   T2
现在,我们希望这些线程在1秒后在屏幕上重复打印一些问候语。以下是完整的示例:

main() started!
47277466478336. Started!
47277466478336. Hello!
47277464377088. Started!
47277464377088. Hello!
47277466478336. Hello!
47277464377088. Hello!
47277466478336. Hello!
47277464377088. Hello!
47277466478336. Hello!
47277464377088. Hello!
47277466478336. Hello!
47277464377088. Hello!
47277466478336. Hello!
47277464377088. Hello!
47277466478336. Hello!
47277464377088. Hello!
47277466478336. Hello!
47277464377088. Hello!
47277466478336. Hello!
47277464377088. Hello!
47277466478336. Hello!
47277464377088. Hello!
47277466478336. Exited!
47277464377088. Exited!
main() exited!
//标题。。。
#包括
#包括
#包括
使用名称空间std;
//你需要一些东西来通知你的线程它应该退出。
//所以,我们使用一个全局变量来存储这些信息。
volatile bool is_exited=false;
//下面是回调()或长时间运行的任务
//我们的线程将执行
void callback()
{
//一旦退出标志的条件为真,该循环应立即退出。
//这个循环体实际上指示
//线程需要执行。
auto id=此线程::get_id();

这与特定的语言有关吗?请添加正确的语言标记。代码正确。请编辑您的问题并添加
C
标记。查看我的答案。我已详细阐述了代码,并提供了详细的注释。我希望这能帮助您理解问题并解决问题。