Pet*_*nks 11 .net c# .net-4.0 task-parallel-library
我正在研究任务并行库的用法,用于我正在做的工作项目,并希望了解长时间运行任务的优点/缺点.我还没有现实生活中的例子,只想了解这背后的理论.
从MSDN页面所说的任务调度程序和这个SO问题来看,似乎最好尽可能避免长时间运行的任务,这样你就不会在ThreadPool之外创建线程.但是说你确实有一项任务需要很长时间才能完成,而不是这样:
Task.Factory.StartNew(() => DoTimeConsumingWork(), TaskCreationOptions.LongRunning)
Run Code Online (Sandbox Code Playgroud)
您是否可以尝试将您的工作分成更小,更快的工作单元并使用任务延续,如下所示:
Task.Factory
.StartNew(() => DoWorkPart1())
.ContinueWith(t => DoWorkPart2())
.ContinueWith(t => DoWorkPart3())
//...etc
Run Code Online (Sandbox Code Playgroud)
这种方法是否会更有益,或者它试图实现的目标是否过度?
似乎最好尽可能避免长时间运行的任务
不完全正确.如果你需要它,那么你将不得不以某种方式制作/分配一个线程,然后使用LongRunning选项的任务可能是最好的选择.该标志只是通知调度程序,Task可能需要一段时间,以便调度程序可以预期.它甚至可能会忽略该选项.
你能尝试将你的工作分成更小,更快的工作单位吗?
如果可以,那就去做吧.但是,并非如此容易分开.
| 归档时间: |
|
| 查看次数: |
5185 次 |
| 最近记录: |