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

时间:2015-03-15 07:18:28

标签: c# task-parallel-library

想知道你是否可以澄清。

我正在编写一个工具,所有todo都是从数据库(sql server)检索数据并创建txt文件。 我说500.000 txt文件。

这很有效,一切都很好。

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

我知道(读)“TPL”并不意味着用于I / 0绑定处理,并且很可能它将执行相同的操作 顺序。

这是真的吗?

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

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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