【发布时间】:2012-10-06 15:08:31
【问题描述】:
我正在阅读关于 Tasks 是使用 4.0 进行异步编程的首选方式。我只是想知道是否有任何用例不应该优先使用任务而不是普通的 c# 线程?
【问题讨论】:
标签: c# .net multithreading task-parallel-library
我正在阅读关于 Tasks 是使用 4.0 进行异步编程的首选方式。我只是想知道是否有任何用例不应该优先使用任务而不是普通的 c# 线程?
【问题讨论】:
标签: c# .net multithreading task-parallel-library
由于Tasks 使用底层的ThreadPool(除非标记为长期运行),因此在不建议使用ThreadPool 时使用它们是一个坏主意,例如
【讨论】:
这里详细介绍: Should I notice a difference in using Task vs Threads in .Net 4.0?
最大的不同是TaskFactory使用线程池,所以如果你有很多任务,它们可能不会立即启动。他们必须等待空闲线程运行。在大多数情况下,这是可以接受的..
在硬件允许的情况下,只要调用 .Start(),线程就会立即运行。
假设线程池没问题,任务提供了许多好处,包括取消、ContinueWith、OnSuccess、OnError、异常聚合和 WaitAll 等等。
【讨论】: