【问题标题】:use Task parallel library for I/O bound processing使用任务并行库进行 I/O 绑定处理
【发布时间】:2016-01-20 00:16:45
【问题描述】:

想知道你是否可以澄清一下。

我正在编写一个工具,它所要做的就是从数据库(sql server)中检索数据并创建 txt 文件。 我说的是 500.000 个 txt 文件。

一切正常。

但是我想知道使用任务并行库是否可以改善和加快创建这些文件所需的时间。

我知道(阅读)“TPL”并不意味着用于 I/0 绑定处理,而且很可能它的执行方式与 顺序。

这是真的吗?

此外,在使用简单的“foreach 并行”的初始尝试中,我收到错误无法访问文件,因为正在使用中。

有什么建议吗?

【问题讨论】:

  • 您可以轻松创建基准并亲自查看
  • 您能否发布您的所有代码并然后提出一个具体问题? “这是真的?” “有什么建议吗?”不是具体问题。
  • @Enigmativity 我没有要求任何人为初学者提供任何代码,第二个我的问题是一个非常明确的问题,翻译给你的是“在做我/ O 绑定处理”。

标签: c# task-parallel-library


【解决方案1】:

您不会并行 I/O 绑定进程。

原因很简单:因为 CPU 不是瓶颈。不管你启动多少线程,你只有一个磁盘可以写入,这是最慢的。

因此,您需要简单地迭代每个文件并编写它们。您可以启动一个单独的工作线程来完成这项工作,或者使用异步 I/O 来获得更好的 UI 响应。

【讨论】:

    【解决方案2】:

    如果您从多个磁盘读取和/或写入,则并行化可以提高速度。例如,如果您想读取所有文件并对它们运行哈希并存储哈希,那么您可以为每个磁盘创建一个线程,您会看到显着的加速。但是,如果您的情况似乎任务不太可能提高性能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-21
      • 1970-01-01
      • 2015-03-03
      • 1970-01-01
      • 1970-01-01
      • 2017-04-16
      相关资源
      最近更新 更多