Main write
running=false를 volatile로 쓴다
releasefield마다 어떤 happens-before edge로 값이 전달되는지 표시한다.
running=false를 volatile로 쓴다
releaseloop에서 같은 flag를 읽는다
acquireiterations 결과를 일반 field에 둔다
before endjoin 반환 뒤 결과를 본다
visible핵심: 한 객체 안에서도 stop signal과 completion result는 다른 동기화 경계를 사용할 수 있다.