gpt4 book ai didi

c++ - 如何干净地退出线程 C++ 程序?

转载 作者:IT老高 更新时间:2023-10-28 12:40:47 25 4
gpt4 key购买 nike

我正在我的程序中创建多个线程。在按下 Ctrl-C 时,会调用信号处理程序。在信号处理程序中,我最后放置了 exit(0)。问题是有时程序会安全终止,但有时会出现运行时错误提示

abort() has been called

那么避免错误的可能解决方案是什么?

最佳答案

通常的方法是设置一个 atomic 标志(如 std::atomic<bool> ),所有线程(包括主线程)都会检查它。如果设置,则子线程退出,主线程开始到join子线程。 那么你就可以干净利落地退出了。

如果您使用 std::thread对于线程,这可能是您发生崩溃的原因。您必须 join std::thread 之前的线程对象被破坏。

关于c++ - 如何干净地退出线程 C++ 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49892608/

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