2014-01-30 5 views
0

내 시스템의 구성이되는 논리 프로세서 : 인텔 (R) 코어 (TM) i7-3820QM CPU에서 @의 2.70GHz, 2694 MHz의 4 코어 (들) (8)의 논리 프로세서 (들)PLINQ 및

내 컴퓨터에는 4 개의 코어와 8 개의 논리 프로세서가 있습니다. 나는 병렬 처리를 위해 PLINQ 쿼리를 사용하는거야 경우

, 나는 WithDegreeOfParallelism에 대한 7을 지정할 수 있도록 쿼리 각 논리 프로세서에 대해 하나 개의 스레드를 생성하여 모든 논리 프로세서를 활용합니다?

답변

2
  1. 논리 프로세서의 수를 PLINQ 개에게 알릴 필요는 없습니다. 이미 알고 있습니다 (Environment.ProcessorCount 사용). 이에 따라 쿼리가 최적화됩니다. WithDegreeOfParallelism의 의도는 어떤 코드가 I/O 집중적이고 CPU 집중적이지 않은 경우와 같이 PLINQ이 모르는 것을 제어하는 ​​것입니다.
  2. 수 있습니다 당신이 주장하는 경우.
  3. 프로세서가 8 개인 경우 왜 7 개로 제한합니까?
+0

3 번째 질문에 대답하려면 7 또는 8을 중요시하지 마십시오. 다른 앱이 굶어 죽으려면 1 개만 남았습니다. –

+1

@wonderfulworld 그럴 필요가 없습니다. 스레드에는 실행할 시간 조각이 있으며 OS는 기아에 대해 걱정합니다. 가능한 한 많이 제공하는 리소스를 사용해야합니다. 따라서 코드가 CPU 집중적 인 경우 8 (PLINQ의 기본값)로 두십시오. IO 집중적 인 경우 더 높은 숫자가 필요할 것입니다. – i3arnon

+0

감사합니다. 내 이해는 CPU 바운드 작업은 병렬 처리해야하지만 IO는 필요가 없다는 것입니다. 내가 잘못? –