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

C# 使用任务并行库进行I/O绑定处理,c#,task-parallel-library,C#,Task Parallel Library,不知你能否澄清一下 我正在编写一个工具,它所要做的就是从数据库(sql server)检索数据并创建txt文件。 我说的是50万个txt文件 它正在工作,一切都很好 不过,我想知道使用任务并行库是否可以改进并加快创建这些文件所需的时间 我知道(阅读)“TPL”并不用于I/0绑定处理,它的性能很可能与 顺序的 这是真的吗 在最初尝试使用简单的“foreach并行”时,我也遇到了一个错误,无法访问文件,因为文件正在使用中 有什么建议吗?您不能并行I/O绑定进程 原因很简单:因为CPU不是瓶颈。无论你

不知你能否澄清一下

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

它正在工作,一切都很好

不过,我想知道使用任务并行库是否可以改进并加快创建这些文件所需的时间

我知道(阅读)“TPL”并不用于I/0绑定处理,它的性能很可能与 顺序的

这是真的吗

在最初尝试使用简单的“foreach并行”时,我也遇到了一个错误,无法访问文件,因为文件正在使用中


有什么建议吗?

您不能并行I/O绑定进程

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


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

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

您可以轻松创建一个基准并亲自查看。您是否可以发布所有代码,然后问一个特定的问题?“这是真的吗?”和“任何建议?”都不是具体的问题。@Enigmativity我并没有要求任何人帮助初学者编写任何代码,我的第二个问题非常明确,可以向您解释为“在进行I/O绑定处理时,是否有必要进行一些并行编码”。