Study

동기화

kinim329 2026. 4. 12. 16:55

동기화란?

동기화는 여러 스레드가 동시에 공유 자원에 접근할 때 데이터의 일관성을 유지하기 위한 기법이다.

동기화가 필요한 이유

스레드는 프로세스의 메모리를 공유하기 때문에 여러 스레드가 동시에 같은 데이터를 수정하면 문제가 발생할 수 있다.

예를 들어 하나의 변수에 여러개의 스레드가 동시에 접근하면 문제가 발생할 수 있다.

이를 Race Condition이라고 한다.

이것들을 해결하기 위해 한번에 접근 가능한 스레드 수를 제한하는 방식이 사용된다.

임계 영역

임계영역은 여러 스레드가 동시에 접근하면 안되는 코드 영역이다.

 

뮤텍스 

뮤텍스는 한 번에 하나의 스레드만
임계 영역에 접근할 수 있도록 제한하는 방식이다.

  • Lock을 획득한 스레드만 작업 수행 가능
  • 작업이 끝나면 Unlock을 통해 다른 스레드가 접근 가능

세마포어

세마포어는 동시에 여러 개의 스레드가
자원에 접근할 수 있도록 허용하는 방식이다.

  • 내부적으로 접근 가능한 개수 관리
  • 설정된 개수만큼 스레드 접근 가능

뮤텍스와 세마포어 비교

뮤텍스 : 1개 스레드만 접근 가능

세마포어 : N개 스레드 접근 가능

 

'Study' 카테고리의 다른 글

분산 트랜잭션과 데이터 일관성  (0) 2026.04.14
데드락  (0) 2026.04.13
스케줄링  (0) 2026.04.11
가상 메모리  (1) 2026.04.10
프로세스와 스레드  (1) 2026.04.09