프로세스 혹은 쓰레드의 동기화란 무엇인가요?
동기화는 경쟁 상태의 해결 방법이라고 볼 수 있다.
프로세스나 쓰레드가 공유하는 공통 자원을 하나에서만 사용할 수 있게 만드는 것을 동기화라고 한다.
시스템의 공유 자원을 여러 쓰레드가 동시에 접근하는 경우에는 데이터 일관성이 깨질 수 있다.
예시
쓰레드 A, B가 있고 공유 자원
R(int 100)을 동시에 사용하는 경우쓰레드 A는
R + 100수행쓰레드 B는
R + 100수행평화롭게
A,B순서로 코드가 실행되면R은 300이 나올 것이다.하지만 컴퓨터는 매우 빠르게 동작하기 때문에
A의 실행이 채 끝나기도 전에B가 실행되는 경우가 발생할 수 있다.이런 경우에는
R이 300이 아니라 200이 나올 것이다.이런 현상을 흔히
오류라고 하고, 이렇게 오류를 발생시키는 코드 구간을임계 구역이라고 부른다.이 경우에 동기화를 통해 공유 자원인
R을 한 번에 하나의 쓰레드에서만 사용할 수 있게 한다면 정상적으로 프로그램이 작동하도록 할 수 있다.
Last updated