공유 상태 표시
전역 변수, heap 객체, 파일 offset, queue처럼 여러 스레드가 접근하는 값을 먼저 찾는다.
경쟁 조건은 두 실행 흐름이 같은 상태를 읽고 쓰는 순서가 바뀌면서 결과가 달라질 때 생긴다. 보호할 대상은 변수 하나가 아니라 상태 사이의 약속이다.
전역 변수, heap 객체, 파일 offset, queue처럼 여러 스레드가 접근하는 값을 먼저 찾는다.
size와 buffer 내용, head와 tail, balance와 ledger처럼 같이 맞아야 하는 조건을 문장으로 만든다.
읽기와 쓰기 사이에 다른 스레드가 끼어들 때 lost update나 깨진 상태가 생기는지 본다.
tmp = counter;
tmp = tmp + 1;
counter = tmp;
// 세 단계 사이에 다른 스레드가 끼어들 수 있다.