这个简单的程序从15个线程开始 - 根据计数.有时在它的一生中它会掉落一些,但它们会回来.
class Program
{
static void Main(string[] args)
{
while (true)
{
Console.WriteLine(Process.GetCurrentProcess().Threads.Count);
Thread.Sleep(500);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我期待的过程,只是有一个线程(和我的直觉是由备份这个)
没有调试器,该进程只有(!)4个线程.当然任何CLR的东西都会隐藏在我的进程中?
这有多重要?这个过程真的有那么多线程吗?为什么?
我发现了一些很棒的文章(Maoni,Richter#1,Richter#2)给出了关于GC的理论和实践的许多细节,但我找不到任何说明如何设置GC线程优先级的内容.
我发现的最接近的是这个表明Finalizer线程"以异步方式运行到应用程序并且具有高优先级".
我一直以为它是一个"低优先级"的线程,但是阅读越来越多关于它似乎是错误的(因为GC必须阻止所有其他线程,并且你不希望你的应用程序依赖于一个低优先级的线程,以便及时恢复).
有谁知道确切知道实际的优先级应该是什么?