我有一个混合模式可执行文件,我注意到我的本机全局变量的构造函数在主线程中被调用,但析构函数在其他一些线程中被调用。
线程的名称是'Thread :: intermediateThreadProc'。
这是什么原因?什么是'Thread :: intermediateThreadProc'线程?
感谢。
答案 0 :(得分:4)
Thread :: intermediateThreadProc()是CLR中的一个小辅助函数,它被用作CLR启动的任何线程的线程启动函数。在SSCLI20源代码src \ vm \ threads.cpp
中找回它预计在另一个线程上看到这个运行。当appdomain被卸载时,清理代码会运行。它的CLR逻辑非常复杂,但是当appdomain最后一次运行终结器线程来清理堆时,它看起来会运行。您可以假设所有托管对象都已死,并且没有其他线程在运行。请注意,您的代码受到两个终结器线程超时的影响。