start한 결과는 join이 완료 경계를 만든 뒤 소비한다

결과 필드가 보인다는 사실과 worker 계산이 끝났다는 사실을 구분합니다.

  1. 1

    worker.start

    비동기 계산 시작

  2. 2

    main 계속

    결과 아직 미완료

  3. 3

    worker write

    partialResult 저장

  4. 4

    main join

    완료까지 대기

  5. 5

    read result

    완료값 소비

핵심: join 정상 반환 뒤에는 worker의 이전 쓰기가 호출 thread에 보이는 완료 관계가 형성됩니다.