critical section 썸네일형 리스트형 동기화(synchronization), 경쟁 조건(race condition), 임계 영역(critical section) 하나의 객체를 두 개의 스레드가 접근할 때 생기는 일 귤박스가 2개 있고, 2개의 스레드에게는 각각 서로 다른 귤 박스를 담당하게 할 것이다. badCounter 객체는 2개의 스레드가 공유한다. 만약, 불량인 상태인 각각의 귤박스에 1개씩 있다고 하자. 그러면 우리가 원하는 state의 값은 2이다. 그러나, 항상 우리가 원하는 값이 높은 확률로 나오지 않는다. 그 이유를 아래에서 살펴보자. 1. LOAD state to R1 : state값을 cpu 레지스터 R1에 로딩. 2. R1 = R1 + 1 : 레지스터 R1에 +1을 한다. 3. STORE R1 to state : 레지스토 R1의 값을 메모리에 반환을 한다. Counter::increament() 메서드의 state++를 어셈블리어로 변환하면.. 더보기 이전 1 다음