我對使用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