<分区>
我是并行编程的新手。 .NET 中有两个可用的类:Task
和 Thread
。
所以,我的问题是:
- 这些类(class)有什么区别?
- 什么时候使用
Thread
而不是Task
(反之亦然)?
标签 c# .net multithreading task
<分区>
我是并行编程的新手。 .NET 中有两个可用的类:Task
和 Thread
。
所以,我的问题是:
Thread
而不是 Task
(反之亦然)?最佳答案
Thread
是一个较低级别的概念:如果您直接启动一个线程,您知道它将是一个单独的线程,而不是在线程池等上执行。
Task
不仅仅是“在哪里运行一些代码”的抽象——它实际上只是“对 future 结果的 promise ”。因此,作为一些不同的例子:
Task.Delay
不需要任何实际的 CPU 时间;这就像设置一个定时器在未来响起WebClient.DownloadStringTaskAsync
返回的任务不会在本地占用太多 CPU 时间;它代表的结果很可能将大部分时间花在网络延迟或远程工作(在网络服务器上)Task.Run()
返回的任务真的是说“我要你单独执行这段代码”;该代码执行的确切线程取决于许多因素。请注意 Task<T>
抽象对于 C# 5 中的异步支持至关重要。
一般来说,我建议您尽可能使用更高级别的抽象:在现代 C# 代码中,您应该很少需要显式启动自己的线程。
关于c# - 任务与线程差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13429129/