全局变量在主线程中没有被破坏?

时间:2010-08-18 10:22:30

标签: c++ multithreading visual-c++ global-variables mixed-mode

我有一个混合模式可执行文件,我注意到我的本机全局变量的构造函数在主线程中被调用,但析构函数在其他一些线程中被调用。
线程的名称是'Thread :: intermediateThreadProc'。

这是什么原因?什么是'Thread :: intermediateThreadProc'线程?

感谢。

1 个答案:

答案 0 :(得分:4)

Thread :: intermediateThreadProc()是CLR中的一个小辅助函数,它被用作CLR启动的任何线程的线程启动函数。在SSCLI20源代码src \ vm \ threads.cpp

中找回它

预计在另一个线程上看到这个运行。当appdomain被卸载时,清理代码会运行。它的CLR逻辑非常复杂,但是当appdomain最后一次运行终结器线程来清理堆时,它看起来会运行。您可以假设所有托管对象都已死,并且没有其他线程在运行。请注意,您的代码受到两个终结器线程超时的影响。