gpt4 book ai didi

c++ - 如何以线程安全的方式退出 C++03 中的程序?

转载 作者:行者123 更新时间:2023-11-30 02:32:44 26 4
gpt4 key购买 nike

我有一个多线程 C++03 应用程序(基于 Linux),我想以线程安全的方式立即终止它。

我试过使用 exit(0)但这会破坏一些正在被另一个线程主动使用的静态变量,导致该线程访问释放的内存和被破坏的对象,从而导致核心转储!显然 exit() 函数存在数据竞争:“调用此函数会破坏所有具有静态持续时间的对象:运行多线程的程序不应调用 exit(有关不影响静态对象的类似函数,请参阅 quick_exit)。”

C++11 提供线程安全的 quick_exit()功能。但我目前没有能力将这个大型应用程序迁移到 C++11。

我也不想花精力尝试干净地终止/加入线程。这是一个非常复杂的程序,需要大量的工作。

还有其他选择吗?我只想让程序立即退出,没有清理,没有核心转储。

编辑:我真正想做的是用不会创建核心转储的东西替换 abort() 调用。 abort() 是线程安全的,顺便说一句。

最佳答案

您将通过调用 _exit(status) 获得您想要的效果(注意前导下划线)

文档:

http://man7.org/linux/man-pages/man2/_exit.2.html

关于c++ - 如何以线程安全的方式退出 C++03 中的程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36094700/

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