반복 연산을 병렬로
순차 반복자와 비슷한 방식으로 병렬 반복자를 사용해 자료를 변환하고 결과를 모은다. 자료를 어떻게 작업으로 나눌지는 병렬 반복자가 관리한다. 각 자료에 대한 연산을 표현하는 코드와 작업을 배분하는 처리를 연결하는 구조다.
작업 구성과 스레드 풀
반복자 외에 join과 scope를 이용해 병렬 작업을 직접 구성할 수 있다. 기본 전역 스레드 풀 대신 사용자 정의 스레드 풀을 사용하는 방식도 제공한다. 반복 중심의 계산과 별도로 나눈 작업 모두를 표현할 수 있다.
결과와 실행 순서
자료 경쟁을 막도록 설계된 API를 제공하지만 병렬 실행의 모든 논리 오류가 사라지는 것은 아니다. 파일 쓰기나 메시지 전달 같은 부수 효과의 순서는 순차 실행과 달라질 수 있다. 계산 결과와 외부에 드러나는 작업 순서를 구분해 다루는 것이 필요하다.