나는 약간 혼란스러워한다 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
—
리드 콥시
Parallel
클래스와 PLINQ 사용 의 차이점을 묻기 때문에 실제로는 상당히 다릅니다 .
다른 사람들은 당신이 어떻게 다시 쓸 수 있는지에 대답했습니다. 그래서 무엇을합니까? normal과 마찬가지로 컬렉션의 각 항목에 대해 "작업"을 수행
—
Jeppe Stig Nielsen 님이
foreach
합니다. 차이점은 병렬 버전은 동시에 많은 "동작"을 수행 할 수 있다는 것입니다. 대부분의 경우 (코드를 실행하는 컴퓨터 및 사용중인 컴퓨터 등에 따라 다름) 더 빠르며 가장 중요한 이점입니다. 병렬로 수행 하면 항목이 어떤 순서 로 처리 되는지 알 수 없습니다 . 일반적인 (직렬) foreach
을 사용하면 lines[0]
먼저, 그 다음으로 계속되는 것이 보장 lines[1]
됩니다.
@JeppeStigNielsen 병렬 처리에 상당한 오버 헤드가 있기 때문에 항상 빠르지 는 않습니다 . 반복하는 컬렉션의 크기와 그 안에있는 작업에 따라 다릅니다. 올바른 방법은 Parallel.ForEach () 사용과 foreach () 사용의 차이 를 실제로 측정 하는 것입니다. 여러 번 일반 foreach ()가 더 빠릅니다.
—
Dave Black
@DaveBlack 물론입니다. 하나는해야한다 측정 은 각각의 경우에, 빠르게 또는 느리게 여부. 나는 일반적으로 병렬화를 설명하려고했습니다.
—
Jeppe Stig Nielsen