【问题标题】:When to use .NET TPL vs a simple .NET Thread Pool?何时使用 .NET TPL 与简单的 .NET 线程池?
【发布时间】:2014-10-15 22:54:03
【问题描述】:

我正在设计一个 Windows 服务,它将查询数据库表以获取要处理的 xml 文档列表。我可以得到 1 个文件,我可以得到 100 个。我原本打算将每个请求放入 .NET 线程池中进行处理,但我想知道是否有使用 .NET TPL 的模型或示例。对于这样一个简单的模型,甚至值得使用 TPL 吗?

【问题讨论】:

  • TPL 旨在很大程度上取代线程池。通常,如果不确定,请使用 TPL。

标签: .net multithreading


【解决方案1】:

现在几乎没有理由直接使用线程池。基本方法可能是使用异步 I/O 来执行 DB 请求(无线程),然后在默认(线程池)任务调度程序上继续工作。如果您需要并行处理(实际上是可行的,因此您可能希望避免共享可变状态),您可以简单地使用 Parallel.ForEach 等。

当然,如果大部分工作由 DB 而不是客户端应用程序完成,您将能够仅使用异步 I/O 完成所有工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    • 1970-01-01
    • 1970-01-01
    • 2021-02-20
    • 1970-01-01
    • 2011-05-30
    • 2013-12-05
    相关资源
    最近更新 更多