我发现了大量相关内容,但这些内容都是拐弯抹角的,但我始终无法找到答案。我几乎 100% 确定Task.Delay(int)不使用线程,因为我可以在只有 16 个逻辑处理器的机器上运行此代码:
var tasks = new List<Task>();
for(int i = 1; i < 100000; i++) tasks.Add(Task.Delay(10000));
await Task.WhenAll(tasks);
Run Code Online (Sandbox Code Playgroud)
并且需要十秒钟才能完成。我认为,如果它使用大约十万个线程,则需要更长的时间。
所以我的问题是如何Task.Delay(int)运作?不是以这个标题不佳的 SO 问题所表明 的方式,而是从线程和硬件资源的角度来看。