start된 결과를 join 뒤 소비하는 순서

write가 아직 없는 시점과 완료 경계 이후의 read를 구별한다.

  1. worker start

    실행 등록만 끝난다

    result 초기값
  2. worker 계산

    자기 slot에 값을 기록한다

    write
  3. main join

    worker 종료 사건을 기다린다

    completion
  4. main read

    완료된 값을 집계한다

    visible

핵심: volatile은 아직 실행되지 않은 계산을 앞당기지 못하므로 완료 조정이 먼저다.