atexit 是否等待其他线程死亡?
Does atexit wait for other threads to die?
atexit()注册的函数是最后执行的函数吗?难不成此时其他线程还在运行?
Are the functions registered with atexit() the last functions to be
executed?
atexit() 调用将在主线程执行完毕后在主线程中执行。除此之外,不作任何保证。
Is it possible that other threads at this time are still running?
是的,如果您没有采取措施停止其他线程并在 main() 之前加入 () 它们 returns。通常,您希望对所有线程进行显式的、受控的关闭,因为 C(或 C++)运行time 不会为您做这件事,让它们继续 运行 即使main() thread is exiting 引入了这样一种可能性,即它们将尝试访问 main() 已释放的资源作为其关闭序列的一部分,这将调用未定义的行为(通常在程序关闭期间偶尔遇到,不易重现的崩溃)
atexit()注册的函数是最后执行的函数吗?难不成此时其他线程还在运行?
Are the functions registered with atexit() the last functions to be executed?
atexit() 调用将在主线程执行完毕后在主线程中执行。除此之外,不作任何保证。
Is it possible that other threads at this time are still running?
是的,如果您没有采取措施停止其他线程并在 main() 之前加入 () 它们 returns。通常,您希望对所有线程进行显式的、受控的关闭,因为 C(或 C++)运行time 不会为您做这件事,让它们继续 运行 即使main() thread is exiting 引入了这样一种可能性,即它们将尝试访问 main() 已释放的资源作为其关闭序列的一部分,这将调用未定义的行为(通常在程序关闭期间偶尔遇到,不易重现的崩溃)