给出以下字符串:
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()
的调用放入循环中,我就面临性能问题。
似乎当前线程到达循环后,其他所有线程都会卡住,直到循环结束。
您将如何做?