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

新手上路,请多包涵

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

abort() has been called

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

原文由 rjlion795 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 445
1 个回答

通常的方法是设置一个由所有线程(包括主线程)检查的 原子 标志(如 std::atomic<bool> )。如果设置,则子线程退出,主线程开始 join 子线程。 然后 你可以干净地退出。

如果您使用 std::thread 作为线程,这可能是导致您崩溃的原因。您必须破坏 join std::thread 对象之前的线程。

原文由 Some programmer dude 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏