SMALL
IT/cs
-
멀티스레딩 환경에서 발생할 수 있는 경쟁상태 해결의 경우 왜 많은 라이브러리들이 Synchronized 를 사용해 임계구역을 설정함으로써 해결하고 있나요?IT/cs 2025. 2. 15. 16:37
멀티스레딩 환경에서 발생할 수 있는 문제 중에는 대표적으로 경쟁상태가 있습니다.경재상태란 하나의 공유자원에 여러 스레드가 접근하여 값을 변경하는 경우에 해당 공유자원에 대한 기대했던 값과는 다른 값의 불일치 문제가 발생할 수 있는 상태를 의미합니다.경쟁상태를 해결하는 여러 방법이 있는데요, 대표적으로1. Synchronized 를 사용한 임계구역 설정2. Atomic 연산을 지원하는 클래스를 활용3. Mutex or Semaphore 을 이용한 스레드 Lock 관리 가 있습니다. 먼저 의문이 들었던것은 Synchronized 보다 Atomic 연산을 제공하는 클래스를 활용하는것이 더 간단하고 가독성도 좋을것 같은데 왜 사용하지 않는걸까? 였습니다.그 이유는 바로 Atomic 연산을 제공하는 클래스는 단 ..