代码之家  ›  专栏  ›  技术社区  ›  eli

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

  •  0
  • eli  · 技术社区  · 15 年前

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

    1 回复  |  直到 15 年前
        1
  •  4
  •   Hans Passant    15 年前

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

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

    推荐文章