동시성 용어도 있습니다. 코드에서 변경하여 하스켈 RTS는 일부 내부 프로세스를 사용하려고하지만 응용 프로그램에서 사용하는 당신이 b
의 caculation에 너무 게으른하지 될 하스켈을 강제 par b (f a b)
에 의해 이루어집니다 힌트를 제공해야없이
도 f
에 결과가 필요하지 않은 경우
모든 인수 (예 : a+b
)가 필요하지 않은 이유 중 하나는 동기화 (일정 계산 및 결과 기다리기)가 약간의 오버 헤드를 발생시키고, 곱셈을 병렬로 계산할 수 있기 때문에 (2*3)+(3*4)
에 틱합니다. 또한 캐시 히트 (cache-hits) 또는 단일 프로세서에서 수행 할 때 수행되는 최적화 또는 최적화 (예 : 한 프로세서에서 다른 프로세서로 결과 전달)가 느슨한 경우가 있습니다.
물론 코드 par
을 사용하는 것은보기 싫지만 목록이나 일부 다른 데이터 구조를 간단한 하위 요소로 접을 때 오버 헤드/계산을 확실히하기 위해 해당 가벼운 요소의 일부 청크를 계산할 수 있습니다. 정말 작다. 이 문제를 해결하려면 parallel을 참조하십시오.
DPH (Data Parallel Haskell)도 있습니다.
프로그램이 IO Monad에 관한 것보다 많은 변경이 필요합니다. , forkIO
출처
2010-06-10 06:37:38
ony
나는 Simon Marlow가 작성한 Haskell *의 병렬 및 동시 프로그래밍이 일반적으로이 주제에 대한 최고의 소개로 간주됩니다. –