【发布时间】:2015-10-15 16:33:06
【问题描述】:
我有以下 C# 代码:
string[] files = Directory.GetFiles(@"C:\Users\Documents\DailyData", "*.txt", SearchOption.AllDirectories);
for (int ii = 0; ii < files.Length; ii++)
{
perFile(files[ii]);
}
where per file 打开每个文件并创建一系列通用列表,然后将结果写入文件。
每次迭代大约需要 15 分钟。
我希望perFile 方法同时执行,例如在开始下一个迭代之前不要等待当前迭代完成。
我的问题是:
我该怎么做?
如何控制perFile 的实例同时运行的数量
如何确定我的计算机一次可以处理多少个perFile 并发实例
【问题讨论】:
-
您正在寻找的东西是可能的,但您不会从中获得任何好处,因为您的硬盘不会同时读取多个扇区。如果您有 ssd,您可能会受益。
-
@M.kazem Akhgary:我们无法从问题中判断
perFile方法是否是磁盘绑定的。 (显然发生了一定数量的磁盘 i/o,但无法知道这是否是瓶颈。)
标签: c# multithreading concurrency