Microsoft .NET 4.0은 프레임 워크에 새로운 "병렬 향상"기능을 도입했습니다. 표준 System.Threading 기능과 새로운 병렬 기능을 사용하는 응용 프로그램을 만드는 것과 어떤 차이가 있는지 궁금합니다. http://channel9.msdn.com/posts/philpenn/Parallel-Programming-with-NET-Parallel-Extensions/스레딩 대 병렬 처리
답변
아마도 Parallel Extensions와 일반 스레드 간의 가장 중요한 차이점은 제어 흐름입니다.
new Thread(...)
또는 ThreadPool.QueueUserWorkItem
을 사용하여 생성 된 스레드는 완전히 확정되지 않은 시점에서 종료됩니다.
ThreadPool.QueueUserWorkItem(() =>
{
Thread.Sleep(1000);
Console.WriteLine("Work Finished");
});
Console.WriteLine("Item Queued");
텍스트 Item Queued
바로 표시되며, Work Finished
약 1 초 지연 후 인쇄됩니다 : 당신은이 코드를 작성합니다. 병렬 확장을 사용하여 비슷한 작성하는 경우 반면에
는 : 아무것도, "테스트"의 다음 회전을 발생하기 전에이 사건에서 볼 수있는 것들
Parallel.For(0, 10, i =>
{
Thread.Sleep(1000);
Console.WriteLine("Test {0}", i);
});
Console.WriteLine("Finished");
는 1 초 지연이다 임의의 순서로 메시지를 보내고 다음에 텍스트 Finished
.
즉, 병렬로 작업을 실행해도 실제로 프로그램 흐름이 변경되지 않습니다. 다른 스레드에서 다른 작업을 실행하여 프로그램의 전체 처리량을 향상시키기 위해 여러 CPU 코어에서 실행될 수 있지만 일반적인 프로그래머에 관한 한 이러한 작업은 실제로 백그라운드에서 실행되지 않습니다 "그들은 실로있을 것입니다. 프로그램 구조를 변경할 필요가 없으며 작업이 완료 될 때 알림을 받기 위해 특별한 조치를 취할 필요가 없습니다. 내부에서 병렬 블록이 발생하는 것을 제어 할 수는 없지만 모든 병렬 작업이 완료 될 때까지 블록이 제어를 반환하지 않는다는 것을 알고 있습니다. 병렬 확장이 훌륭한 있지만
, 그것은 당신이 실제로 필요는 스케줄러를 구현하거나하기 위해 작업자 스레드에 위임로, 백그라운드에서 작업을 실행하면 아무 소용이있다 무엇이든지 그 PX를 언급 곰 UI를 반응 적으로 유지하십시오. 여전히 스레드 또는 비동기 구성 요소를 사용해야합니다.
는 여기에 내가 잠시 다시이 주제에 대한 감시 좋은는 Channel9입니다. 대부분의 작업에 병렬 처리 확장을 사용하는 것이 더 쉽습니다.
안녕하세요, 아담,이 링크는 나를 위해 작동하지 않습니다. 페이지를 찾을 수 없음, 다른 유용한 링크 –
병렬 처리 자동 생성 스레드에 대한 그냥 멋진 인터페이스 :
병렬 프레임 워크는 .NET 스레딩 모델을 사용합니다.이 모델은 Windows 스레딩 모델을 기반으로합니다. 그러나 병렬 라이브러리의 효율성을 높이기 위해 일반적인 프레임 워크에서 많은 최적화 작업이 수행되었습니다.
This blog 추가 세부 사항이 있습니다.
- 1. PHP의 멀티 스레딩/병렬 처리
- 2. 문제점 이해 대기열, 병렬 처리 및 스레딩
- 3. mapreduce 대 다른 병렬 처리 솔루션
- 4. Java의 병렬 스레딩
- 5. 병렬 처리
- 6. 병렬 C# 스레딩 성능 문제
- 7. 스레드 대 스레딩
- 8. PHP의 병렬 처리
- 9. 비트 맵의 병렬 처리
- 10. Gforth 병렬 처리
- 11. 데이터베이스 액세스 병렬 처리
- 12. Python의 병렬 처리 옵션
- 13. Python의 병렬 처리
- 14. 파이썬 병렬 처리 라이브러리
- 15. 자바에서의 병렬 처리 시뮬레이션
- 16. freeRTOS 및 병렬 처리
- 17. .Net의 병렬 처리
- 18. perl에서의 간단한 병렬 처리
- 19. 일괄 처리 응용 프로그램 병렬 처리
- 20. 멀티 코어 및 병렬 처리
- 21. 서블릿의 병렬 처리 횟수 제한
- 22. bash의 matlab 배치 병렬 처리
- 23. 병렬 처리 및 임시 파일
- 24. Java + Threads : 병렬 처리 라인
- 25. 병렬 처리 만들기 -j 명령
- 26. 작업 병렬 처리, 스레드 수?
- 27. perl, python, 병렬 처리, 포크
- 28. 수직 및 수평 병렬 처리
- 29. 비동기 멀티 스레딩 예외 처리?
- 30. 단일 컴퓨터를 넘어서 .NET 병렬 처리 패턴
또한 작업을 기다릴 때 스레드와 달리 모든 하위 작업을 기다립니다. 오류 처리는 작업과 스레드가 훨씬 좋습니다. –