나는 다음과 같은 프리젠 테이션을 읽고 있었다 :지도 함수가 본질적으로 평행 한 이유는 무엇입니까?
http://www.idt.mdh.se/kurser/DVA201/slides/parallel-4up.pdf
및 저자가지도 기능은 병렬 아주 잘 구축되어 있음을 주장한다 (특히 그는 3 페이지 또는 슬라이드 9와 10에 대한 자신의 주장을 뒷받침).
목록의 각 값을 +1만큼 증가시키는 문제가 발생하면 목록을 반복적으로 사용하면 인덱스 값이 변경되어 잠재적 인 경쟁 조건 문제가 발생하는 것을 볼 수 있습니다. 하지만 맵 기능으로 프로그래머가 병렬로 코드를 작성하는 것이 더 좋은지 궁금합니다.
지도가 재귀 적으로 정의 되었기 때문입니까? 그래서 각 함수 호출을 다른 스레드에 던질 수 있습니까?
누군가가 몇 가지 구체적인 정보를 제공하기를 바랍니다. 감사합니다.
을하기 때문에에 f' 기능 '의 각 응용 프로그램 입력 목록의 요소는 다른 응용 프로그램에서 다른 요소로 * 독립적 *이므로 서로 모두 독립적으로, 즉 병렬로 수행 할 수 있습니다. 가상의'par_map'은 저장소를 할당하여 결과 목록을 백업하고, 목록의 각 요소'e'에 대한 새로운 스레드의 실행을 촉구하며,'e' 결과로 갱신 될 필요가있는 장소에 대한 참조를 제공합니다. fe'. 더 이상의 활성 스레드가 없으면'map'이 끝났습니다. 물론 각 스레드가 1000 'e's 블록을 만들 수 있습니다. –