【发布时间】:2011-04-06 12:03:33
【问题描述】:
这里引用了 Jeffrey Richter 的“CLR via C#”一书:
** 当另一个任务完成时自动启动一个新任务**
...调用 Wait 或查询任务的 任务未完成时的结果属性 尚未完成运行将很可能 导致线程池创建一个新的 线程,这增加了资源使用率 并损害可扩展性。
为什么线程池需要新建线程?
【问题讨论】:
-
就我个人而言,我希望
Wait是一个常见的操作——如果这涉及到一个额外的线程,我会感到惊讶。 -
@Marc Gravell 反射器说你是对的:'code' public TResult get_Result() { if (!base.IsCompleted) { Debugger.NotifyOfCrossThreadDependency(); base.Wait(); } base.ThrowIfExceptional(!this.m_resultWasSet);返回 this.m_result; } '代码'
-
我也在读那本书,昨天我也在读同样的部分……但我放弃了,因为我很困,我以为我没有读懂它。现在我知道我不是唯一一个哈哈
标签: c# .net multithreading