Open utterances-bot opened 4 years ago
Task.Run(async () => await DoAsync(i)) 好像就没问题
@9527code 是的,你那个不会出问题。会出问题的是因为中间转了一次同步……
这跟死锁一点都不一样。只是线程池默认就8个线程,并发数量超过8的时候,后台会创建新的线程,时间就耗在这里了,如果你把16个task再跑一次,你会发现时间基本为零。
或者在代码第一行加上ThreadPool.SetMinThreads(50, 50);
,有奇效
.NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况 - walterlv
.NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
https://blog.walterlv.com/post/task-wait-may-cause-long-time-waiting.html