gpt4 book ai didi

c - atexit 被认为是有害的?

转载 作者:太空狗 更新时间:2023-10-29 16:08:00 24 4
gpt4 key购买 nike

在图书馆等大型项目中使用 atexit 是否存在固有的危险?

如果是这样,atexit 背后的技术本质是什么可能导致大型项目出现问题?

最佳答案

我避免在库中使用 atexit 的主要原因是它的任何使用都涉及全局状态。一个好的库应该避免全局状态。

不过,还有其他技术原因:

  1. 实现只需要支持少量(我认为是 32 个)atexit 处理程序。之后,所有对 atexit 的调用都可能失败,或者它们成功或失败取决于资源可用性。因此,如果您无法注册您的 atexit 处理程序,您必须处理该怎么做,并且可能没有任何好的方法可以继续。

  2. 未定义 atexitdlopen 或其他动态加载库的方法的交互。无法安全卸载已注册 atexit 处理程序的库,不同的实现处理这种情况的方式可能不同。

  3. 编写不当的 atexit 处理程序可能会相互影响,或者只是不良行为,从而阻止程序正常退出。例如,如果 atexit 处理程序试图获取另一个线程中持有的锁,并且由于调用 exit 时的状态而无法释放。

关于c - atexit 被认为是有害的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17350308/

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