【发布时间】:2012-02-22 05:24:28
【问题描述】:
我正在研究我正在做的工作项目中任务并行库的使用情况,并想了解长时间运行任务的优点/缺点。我还没有现实生活中的例子,只是想了解这背后的理论。
从 MSDN 页面关于 task schedulers 和 SO question 的内容来看,似乎最好尽可能避免长时间运行的任务,这样您就不会在 ThreadPool 之外创建线程。但是假设你确实有一个需要很长时间才能完成的任务,而不是这个:
Task.Factory.StartNew(() => DoTimeConsumingWork(), TaskCreationOptions.LongRunning)
您能否尝试将您的工作分成更小、更快的工作单元并使用任务延续,如下所示:
Task.Factory
.StartNew(() => DoWorkPart1())
.ContinueWith(t => DoWorkPart2())
.ContinueWith(t => DoWorkPart3())
//...etc
这种方法是否会更有益,还是对于它试图实现的目标来说是矫枉过正?
【问题讨论】:
-
这真的取决于你所说的long是什么意思。
标签: c# .net .net-4.0 task-parallel-library