gpt4 book ai didi

c# - 垃圾收集器如何避免此处的无限循环?

转载 作者:IT王子 更新时间:2023-10-29 03:35:44 25 4
gpt4 key购买 nike

考虑以下 C# 程序,我将其提交到 codegolf 作为创建无循环循环的答案:

class P{
static int x=0;
~P(){
System.Console.WriteLine(++x);
new P();
}
static void Main(){
new P();
}
}

这个程序在我的检查中看起来像一个无限循环,但它似乎运行了数千次迭代,然后程序成功终止而没有错误(No errors are thrown)。最终未调用 P 的终结器是否违反规范?

很明显,这是愚蠢的代码,永远不应该出现,但我很好奇这个程序是如何完成的。

原始代码高尔夫帖子:: https://codegolf.stackexchange.com/questions/33196/loop-without-looping/33218#33218

最佳答案

根据 C# CLR 第二版中的 Richter(是的,我需要更新):

第 478 页

For (The CLR is shutting down) each Finalize method is given approximately two seconds to return. If a Finalize method doesn't return within two seconds, the CLR just kills the process - no more Finalize methods are called. Also, if it takes more then 40 seconds to call all objects' Finalize methods, again, the CLR just kills the process.

此外,正如 Servy 提到的,它有自己的线程。

关于c# - 垃圾收集器如何避免此处的无限循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24662454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com