【问题标题】:when to use Task and when to use Thread?什么时候使用Task,什么时候使用Thread?
【发布时间】:2012-03-15 20:27:15
【问题描述】:

我刚刚问了关于 Task 的问题,但意识到我实际上想问更一般的问题。 有人可以总结任务和线程的优缺点。 如何理解我应该使用Task还是Thread?

【问题讨论】:

  • 我已经回答了一个类似(但不完全相同)的问题here。希望它派上用场。
  • @AdamMihalcin 我正在寻找可以回答在每种特定情况下我应该使用什么的算法 - 任务或线程?
  • 首先要了解的是任务和线程有什么区别。 “给我做三明治”是一项任务。聘请厨师正在创建一个线程。如果你把这两件事混为一谈,那么你要么雇佣一大堆你不能吃的不必要的厨师,要么你会要求一堆三明治来做晚餐。您决定使用任务还是线程的方式是决定是否要在代码中表示任务无论谁执行任务,还是要代表执行任务的工人
  • @javapowered:它们是首选方式,因为它们会重新聚焦您的代码以强调正在执行的任务,而不是正在执行它们的工作人员我>。线程代码的大多数问题都源于协调工作线程(线程)的困难。如果你从事吃三明治的生意,最好能说“我需要一百个三明治”,然后让任务库算出要雇用多少厨师。

标签: c#


【解决方案1】:

Task 是一个以异步方式进行编程的命令。 Thread 实际上是OS 内核对象,执行所请求的内容。将Task 想象成一个聪明的线程聚合器/组织器,它“知道”在您的CPU 上运行现代任务更好。它比多线程的常见实现更聪明(这就是微软建议选择它的原因)。该功能可帮助您以更轻松的方式管理Threads

还请查看此Should i use ThreadPools or Task Parallel Library for IO-bound operations,它可能会为您提供一些您可能感兴趣的性能问题的提示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-12
    • 2014-06-04
    • 2017-09-13
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    相关资源
    最近更新 更多