不同线程中的多个atexit处理程序

Abr*_*ile 2 c++ gcc g++

我对atexit在多线程应用程序中的使用存有疑问.

假设我有以下场景

 Thread A calls atexit(handler_a)
 Thread B calls atexit(handler_b)
 main()   calls atexit(handler_main)
 Thread C calls atexit(handler_c)
 ....
Run Code Online (Sandbox Code Playgroud)

是在一个唯一线程中执行的所有处理函数还是在单独的线程中执行?

如果它们确实在一个线程中执行(一个接一个),那么该线程是主线程吗?

我使用的是Linux和g ++.

Jas*_*ill 5

正如rici所说,atexit处理程序是从调用exit的线程调用的.如果需要每个线程处理程序,可以使用pthread_key_create析构函数.