我有些困惑Parallel.ForEach
。
是Parallel.ForEach
什么,它的作用是什么?
请不要引用任何MSDN链接。
这是一个简单的例子:
string[] lines = File.ReadAllLines(txtProxyListPath.Text);
List<string> list_lines = new List<string>(lines);
foreach (string line in list_lines)
{
//My Stuff
}
如何用重写这个示例Parallel.ForEach
?
这可能已经在这里找到答案stackoverflow.com/questions/3789998/...
—
Ujjwal Manandhar
@UjjwalManandhar这实际上是完全不同的,因为它询问的是
—
Reed Copsey 2012年
Parallel
类与使用PLINQ 之间的区别。
其他人回答了如何重写。那怎么办呢?就像常规一样,它对集合中的每个项目都执行“操作”
—
杰普·斯蒂格·尼尔森
foreach
。区别在于并行版本可以同时执行许多“操作”。在大多数情况下(取决于运行代码的计算机,繁忙程度以及其他因素),它会更快,这是最重要的优势。请注意,当您并行执行此操作时,您将无法知道以什么顺序处理这些项目。使用通常的(序列)foreach
,可以保证lines[0]
首先出现,然后依次lines[1]
类推。
@JeppeStigNielsen并不会总是更快,因为并行处理会产生大量开销。这取决于您要迭代的集合的大小以及其中的操作。正确的做法是实际测量使用Parallel.ForEach()与使用foreach()之间的差异。通常,普通的foreach()速度更快。
—
戴夫·布莱克
@DaveBlack当然。在每种情况下,都必须测量它是快还是慢。我只是在试图描述并行化。
—
Jeppe Stig Nielsen