Ric*_*ard 6 multithreading c#-4.0
我无意中听到一位同事说任务基本上是一个轻量级的线程.来自C++背景(最轻量级处理单元的线程),这对我来说似乎是违反直觉的.
任务不像线程一样重吗?
您需要区分工作单元(任务)与用于托管/执行它们的基础流程.任务甚至不需要在其他线程上运行.例如,可以在单线程应用程序中执行任务,该应用程序定期对任务池进行控制.
即使在不同的线程上执行任务,任务和线程之间通常也没有1对1的关系.线程被预先分配为池的一部分,然后任务被安排在这些线程上运行.创建新任务不需要创建线程的开销,它只需要任务队列中的enque成本.
这使得任务本身具有更大的可扩展性.在我的应用程序的整个生命周期中,我可以拥有数百万个任务,但实际上只能使用一些恒定数量的线程.