park waiter를 open하는 publication 순서

condition write가 signal보다 앞서도록 producer 동작을 고정한다.

  1. waiter 등록

    Thread reference를 volatile field에 둔다

    target
  2. open write

    condition을 true로 publish한다

    state
  3. unpark

    등록된 waiter permit을 제공한다

    wake
  4. worker read

    loop에서 최신 open을 확인한다

    complete

핵심: unpark만 호출하고 condition을 바꾸지 않으면 worker는 다시 park해야 한다.