2009-11-20 3 views
2

유지 관리 목적으로, 내 충동은 항상 병렬 처리를 사용하는 것입니다. 단순한 루프의 경우 실제로 오버 헤드가 발생하여 함수를 느리게 할 수있는 것처럼 들리며, 실행 순서가 차이가 나는 루프 일 경우에는 실수로 생각할 수 있습니다.언제 새로운 병렬 루프 함수를 사용해야합니까?

병렬 처리를 언제 사용하고 언제 피할 수 있을지 어떻게 결정합니까? 문제 원인이

답변

3

것들 : 스레드 선호도와 일에

  • 의존성을; UI 컨트롤; asp.net 컨텍스트
  • 어떤 스레드 특정 상태 (스레드 정적/스레드 로컬) 가변 상태 부작용

하지만 더 중요한와

  • 아무것도; 너는 그것을 필요로 하느냐? 대부분의 경우 과도 함이며 스레딩은 항상에 약간의 오버 헤드가 있습니다 (경과 시간이 감소하더라도 총 CPU 시간이 증가합니다). 지금; 높은 스레드 환경 (바쁜 웹 서버 등)에서 이 이미 인 경우 도움이되지 않습니다. 시간이 전체 CPU 시간보다 더 중요 경과 할 때 보통 자체에 들어오는 곳

    시나리오의 몇 가지합니다 - 클라이언트에서 이렇게 아주 유용, 또는 일부 웹 서버 시나리오. 상태가 불변 인 경우 특히 유용합니다. 따라서 작업을 찢어 버리고 다시 결과를 다시 결합하는 것은 매우 사소합니다. 도형 가공 등의 훌륭한 예가 있거나 Parallel과 같은 기타 CPU 집약적 인 작업이 있습니다.

  • +0

    유용한 웹 서버 시나리오의 예는 무엇입니까? –

    +0

    여러 개의 외부 소스 (예 : "bing", "google"등)를 한꺼번에 사용하는 코드를 작성할 때 매우 편리합니다. 즉 CPU가 병목 현상이 아닌 네트워크 지연 시간입니다. 또는 다른 요청에 영향을주지 않는 CPU 집약적 인 작업. –