使用atexit()注册的函数是否要执行最后的函数?是否有可能此时其他线程仍在运行?
答案 0 :(得分:3)
使用atexit()注册的函数是最后的函数 执行?
主线程完成执行后,将在主线程中执行atexit()调用。除此之外,没有任何保证。
此时其他线程是否仍然可以运行?
是的,如果你没有采取措施停止其他线程并在main()返回之前加入()它们。通常,您希望对所有线程进行显式的受控关闭,因为C(或C ++)运行时将不会为您执行此操作,并且即使在main()线程退出时也让它们继续运行引入了这种可能性他们将尝试访问main()已作为其关闭序列的一部分解除分配的资源,这将调用未定义的行为(通常在程序关闭期间偶尔出现,不易重现的崩溃)