【问题标题】:How to handle long running process using TPL如何使用 TPL 处理长时间运行的进程
【发布时间】:2014-06-23 13:55:53
【问题描述】:

我最近开始学习 C# 中的 TPL。我们有一个执行某些功能的 Windows 服务。

I have to perform each job paralelly rather than  sequentially.

每项工作都需要10 多分钟才能完成。所以,我认为这是长期运行的过程。

所以,我想我 不会为此创建 ThreadPool,因为它适用于短时间线程。

如何使用 TPL 处理长时间运行的任务。假设我有 100 个工作要处理,

Do i need to create 100 tasks for long running process ?

请在上面澄清一下。

【问题讨论】:

  • 创建任务时是否尝试过指定TaskCreationOptions.LongRunning?那么很有可能就不用线程池了……
  • 长时间运行的进程是 CPU 绑定进程还是 I/O 绑定进程?
  • 这是一个 CPU 绑定进程
  • 假设我有数百个作业要处理,我需要创建 100 个线程吗?
  • @JohnSkeet。如果我有很多工作要处理,它会创建很多线程吗?

标签: c# task-parallel-library long-running-processes


【解决方案1】:

使用TaskCreationOptions.LongRunning。它是为可能混淆线程池启发式的长时间运行的工作而设计的。从 .NET 4.5 开始,这始终在新线程上运行您的代码。您仍然可以使用所有其他 TPL 功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    • 2016-01-03
    • 2016-10-13
    • 1970-01-01
    相关资源
    最近更新 更多