我对使用atexit
在多线程应用程序中存在疑问。不同线程中的多个atexit处理程序
假设我有以下情形
Thread A calls atexit(handler_a)
Thread B calls atexit(handler_b)
main() calls atexit(handler_main)
Thread C calls atexit(handler_c)
....
都处理函数在一个独特的线程执行,或者是他们在单独的线程中执行?
如果他们在单个线程(一个接一个地执行)中执行,该线程将成为主线程吗?
我正在使用Linux和g ++。
很难想象在调用exit()的线程中,不仅仅调用atexit处理程序的exit()的实现。确实,该标准没有定义atexit处理程序的顺序,对atexit的调用没有同步,但标准确实需要atexit是线程安全的,所以看起来必须有一些调用顺序。无论如何,很难看到实现如何知道两个来自不同线程的调用是否被故意同步。 – rici