증가 연산
counter = counter + 1;
읽기, 더하기, 쓰기가 분리되면 한쪽 증가분이 사라질 수 있다.
공유 상태를 읽고, 판단하고, 다시 쓰는 사이에 다른 스레드가 끼어들면 결과가 달라진다.
counter = counter + 1;
읽기, 더하기, 쓰기가 분리되면 한쪽 증가분이 사라질 수 있다.
if (!ready) init();
두 스레드가 동시에 false를 보면 초기화가 중복 실행될 수 있다.
for (item in list) use(item);
다른 스레드가 목록을 바꾸면 누락, 중복, 잘못된 참조가 생긴다.