본문 바로가기

CS 잡지식

동기화(Synchronization) VS 동시성(Concurrency)

이 둘의 개념이 매우 혼동스럽다. 

한국어로 둘다 단어가 비슷한 것도 한 몫을 한다. 

영어단어로 기억을 하면 헷갈리지 않을 것이다. 

이번 페이지에서는 이 둘의 차이점을 알아 보자

 

동시성(Concurrency

트랜잭션 A와 B가 있다고 하자.

이 둘은 동시에 실행이 된다고 하자!!

이렇게 2개 이상의 작업들이 동시에 실행되는 것을 동시성(concurrency) Problem이라고 한다.

동시성 문제의 핵심은,

 비록 동시에 실행이 되더라고 마치 하나하나 독립적으로 실행한 것과 같은 결과를 내게 하는 것이다. 

 

동기화(Synchronization)

같은 데이터를 가지고 무언가를 실행을 하는 것!

ex1) 트랜잭션 동기화-> 같은 커넥션을 사용하기 위하여, 각 메서드에 Connection객체를 매개 변수로 일일이 넣음으서
   
같은 커넥션을 사용하여 동기화 실현!!!ex2) 로그 추적기 구현 시!-> TransactionId 값을 매개변수로 전달을 함으로써, 호출되는 모든 내부 메서드들이 똑같은 하나의 TransactionId를 전달 받고, 깊이(Level)도 계층에 따라 표현할 수 있는 것