如何使用Parallel.ForEach处理许多字符串?

时间:2019-05-28 13:30:57

标签: c# parallel-processing

给出以下字符串:

String 1: "car book door"
String 2: "book water toy happiness"
String 3: "door mouse water"

鉴于有一个读取器可以读取给定的字符串,如下所示:

var character = Reader.Read()

每次调用Read()方法都将返回序列中的下一个字符。

鉴于读者没有更多可读取的字符,则会引发异常。

给出预期结果列表: 结果:

  

[“书-2”,“门-2”,“水-2”,“汽车-1”,“幸福-1”,“鼠标-1”,“玩具-1”,“水-1” “]

您将如何使用C#并行功能(例如Parallel.ForEach()Parallel.For())处理这些字符串,以便从给定的字符串中获得预期的结果列表?

另外,请考虑字符串可能非常大并且处理可能会花费很长时间的情况,因此有必要每5秒输出一次处理进度。 进度报告应为类似于预期结果列表的列表,并且每5秒输出一次当前过程状态。系统处理完所有列表后,将使用相同的格式输出总体结果。

我尝试使用Parallel.ForEach(),但是一旦将对Reader.Read()的调用放入循环中,我就面临性能问题。

似乎当前线程到达循环后,其他所有线程都会卡住,直到循环结束。

您将如何做?

0 个答案:

没有答案