multithreading - 与线程相比,任务轻巧吗?

标签 multithreading c#-4.0

我听不到一个同事说任务基本上是一个轻量级线程。来自C++背景(线程在其中最轻的处理单元所在的地方),这对我来说似乎是违反直觉的。

任务不像线程那么重吗?

最佳答案

您需要区分工作单元(任务)和用于承载/执行工作的基础过程。 Task甚至不必在其他线程上运行。例如,可以在单线程应用程序中执行任务,该应用程序会定期将控制权交给任务池。

即使在单独的线程上执行任务,任务与线程之间通常也不存在一对一的关系。线程被预分配为池的一部分,然后计划任务在可用时在这些线程上运行。创建新任务并不需要创建线程的开销,而只需要在任务队列中入队的代价。

这使任务本质上具有更大的可伸缩性。在我的应用程序的整个生命周期中,我可以完成数百万个任务,但实际上只能使用一定数量的线程。

关于multithreading - 与线程相比,任务轻巧吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17110956/

相关文章:

javascript - osx 多线程和 webview

java - Java中如何实现多个线程下载单表数据?

vb.net - VB.NET代码用于运行多个线程

C# 4.0 - 如何处理可选的字符串参数

visual-studio-2010 - 在 64 位系统上使用 32 位 dll 显示 0x8007000B 错误

c# - 在 C# 中使用 TakeWhile 进行 Linq

javascript - 仅打印选定的元素/页面

asp.net - 将 linq 查询结果转换为数据表 C#

database - 在ring网站中使用atom作为内存数据库

python - 我怎样才能做一个多线程扭曲的python