使用任务并行库进行 I/O 绑定处理

use Task parallel library for I/O bound processing

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

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

一切正常。

不过我想知道使用 Task Parallel 库是否可以改进和加快创建这些文件所需的时间。

我知道(读到)"TPL" 不打算用于 I/0 绑定处理,而且它很可能会执行与 顺序 .

这是真的吗?

同样在使用简单 "foreach parallel" 的初始尝试中,我收到错误无法访问文件,因为正在使用中。

有什么建议吗?

您没有并行 I/O 绑定进程。

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

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

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