프로세스 혹은 쓰레드의 동기화란 무엇인가요?

  • 동기화경쟁 상태의 해결 방법이라고 볼 수 있다.

  • 프로세스나 쓰레드가 공유하는 공통 자원을 하나에서만 사용할 수 있게 만드는 것을 동기화라고 한다.

  • 시스템의 공유 자원을 여러 쓰레드가 동시에 접근하는 경우에는 데이터 일관성이 깨질 수 있다.

예시

  • 쓰레드 A, B가 있고 공유 자원 R(int 100)을 동시에 사용하는 경우

  • 쓰레드 A는 R + 100 수행

  • 쓰레드 B는 R + 100 수행

  • 평화롭게 A, B 순서로 코드가 실행되면 R은 300이 나올 것이다.

  • 하지만 컴퓨터는 매우 빠르게 동작하기 때문에 A의 실행이 채 끝나기도 전에 B가 실행되는 경우가 발생할 수 있다.

  • 이런 경우에는 R이 300이 아니라 200이 나올 것이다.

  • 이런 현상을 흔히 오류라고 하고, 이렇게 오류를 발생시키는 코드 구간을 임계 구역이라고 부른다.

  • 이 경우에 동기화를 통해 공유 자원인 R한 번에 하나의 쓰레드에서만 사용할 수 있게 한다면 정상적으로 프로그램이 작동하도록 할 수 있다.

Last updated