2011-05-13 5 views
0

다음AsParallel()이 병렬로 작동하는지 확인하는 방법

foreach (var portfolio in portfolios.AsParallel()){ Some Processing ...} 

코드가 있고 다른 코어에서 병렬로 작업하고 있는지 확인하고 싶습니다. 이것을 보장 할 방법이 있습니까?

    Parallel.ForEach(portfolios, 
       portfolio => 
       { Some Processing....} 

다른 스레드가 만들어지고 제거 된 것을 볼 수 있으며 또한 병렬 작업 창에서 병렬 작업을 볼 수 있지만 Collection.AsParallel()에 대해서도 확신 할 수 없기 때문에 예측할 수없는 동작이 발생합니다.

더 좋은 아이디어가 있습니까?

답변

3

AsParallel에 대한 요점은 그렇지 않다는 것입니다. CLR에 그대로두면 실행 및 최적화 방법을 결정할 수 있지만 대부분 병렬로 실행됩니다.

또한 일관성이 없음을 설명해야합니다. 스레딩 및 동기화 문제가 발생할 가능성이 큽니다. 스레드의 안전하지 않은 작업은 상태의 동기화를 검토하지 않는 한 AsParallel의 좋은 후보가 아닙니다.

+0

foreach 루프에서 처리 후 "Commentary"유형의 다른 모음을 생성합니다. 논리에 따르면이 컬렉션에는 null Commentary 객체가 없어야하지만 일부 Parallel.ForEach()로 인해 발생합니다. 이 문제를 해결할 수있는 아이디어. – TheITGuy

관련 문제