【发布时间】:2015-10-28 05:52:29
【问题描述】:
我学到了从池线程调用 Task.Wait 会导致线程饥饿死锁的艰难方法。
根据this MSDN article,在“死锁”一章中,我们应该遵守这两条规则:
- 不要创建其同步方法等待异步函数的任何类,因为可以从池中的线程调用此类。
- 如果类阻塞等待异步函数,请勿在异步函数中使用任何类。
似乎唯一可以合法使用 Task.Wait 的地方是 Main 函数 - 我在这里有点夸张,但你明白了。
为什么 Task.Wait 仍然是 .NET 框架的一部分,看看它有多危险?
【问题讨论】:
标签: c# .net asynchronous async-await task-parallel-library