나는 스레드로 작업하는 초보자입니다. 나는 한 블록의 코드를보고있다. 파트 목록의 각 파트에 대해 개별 스레드에서 메서드를 실행해야한다고 생각합니다. 코드 (a)는 다음과 같습니다.Task.Factory.StartNew에 관한 기본 문제
Task.Factory.StartNew(()=>
foreach (string part in partlist)
{
DoLotsOfStuff(part);
}
);
저에게 그것은 모든 것을 단일 스레드로 실행하는 것처럼 보입니다. 개별 스레드에서 메소드를 실행해야한다면 코드가 이렇게 보이길 기대합니다. 코드 (b)는 다음과 같습니다.
foreach (string part in partlist)
{
Task.Factory.StartNew(()=> DoLotsOfStuff(part));
}
개별 스레드에서 메소드를 실행하는 코드 블록은 어느 것입니까? 그리고/또는 작업을 수행하기 위해 어떤 변경을해야합니까?
당신은 정확합니다. 첫 번째 코드 블록은 모든 스레드를 단일 스레드로 실행합니다. 두 번째는 별도의 스레드에서 DoLotsOfStuff()의 각 반복을 실행합니다. – Kevin
BTW : 각 파트에 대해 다른 Task를 만드는 대신 Parallel.ForEach를 사용하는 것이 좋습니다 (partList가 큰 경우). – EZI