EasyCastleUNITY

[과제] 동기와 비동기 본문

개인 필기

[과제] 동기와 비동기

EasyCastleT 2023. 8. 14. 22:20

데이터 처리 모델의 방식들이다. 

동기(synchronous)

요청을 하면 시간이 얼마나 걸리던지 요청한 자리에서 결과가 주어져야 한다. 

직렬적으로 일을 처리하기 때문에, 요청이 들어오면 순차적으로 작업을 수행한다.

작업이 수행중이면 다음 작업은 대기하게 된다. 

 

그렇기에 한 개의 데이터 요청에 대한 응답이 이루어질 때까지 계속 대기를 해야만 한다. 

 

동기형 데이터 처리 모델의 장단점으로는 

장점은 설계가 매우 간단하고 직관적이라는 점이고

단점은 결과가 주어질 때까지 아무것도 못하고 대기(다른 작업 수행 불가) 해야 한다는 것이다.

 

아래 사진은 동기 데이터 처리 모델의 유명한 예이다. 

동기의 유명한 예

하나의 계좌에서 돈을 송금하고, 그 결과로 인해 다른 계좌에서도 변경이 일어나게 되었다.

즉 돈을 송금했다는 과정으로 인해, 송금을 받은 계좌에서도 바로 금액 증가라는 결과가 생기게 되었다. 

이 예처럼, 어떤 요청에 따라, 결과가 바로 주어지는 것은 동기의 예라고 할 수 있다. 

비동기(Asynchronous)

요청을 한다고 그 자리에서 바로 결과가 일어나지 않을 거라는 약속이다.

데이터 요청에 대한 응답을 계속 기다리지 않아도 되고, 다른 외부 활동을 수행가능하다. 

병렬적으로 일을 처리하기 때문에, 요청이 들어오면, 해당 요청에 의한 작업이 끝나지 않았더라도 요청을 계속 받는다. 

 

한 가지  일에 대해 행하는 목적이 서로 다르다. 

그렇기에 둘의 작업 처리 기간은 일치하지 않고, 일치하지 않아도 된다. 

 

비동기의 장단점으로

장점은 요청에 따른 결과가 반환되는 시간 동안, 동기와 다르게 다른 작업을 수행가능하다는 것이고

단점은 동기식 처리 모델에 비해, 설계가 복잡하다는 것이다. 

 

아래의 사진은 비동기의 유명한 예이다. 

비동기의 유명한 예

학생과 선생님은 모두 시험지를 처리하지만, 목적이 다르다. 

학생은 시험지를 푸는 목적을 가지고 있고, 선생님은 해당 시험지를 채점하는 역할을 가지고 있다.

시험지에 대한 서로의 목적이 다르기에, 바로바로 결과가 나오지 않아도 된다. 

동기와 비동기의 차이

결국 동기식 처리 모델과 비동기식 처리 모델의 차이는 

어떤 작업이나 그와 연관된 작업을 처리하고자 하는 목적(시각)의 차이라고 할 수 있다. 

위에 나온 예들 처럼, 동기는 추구하는 행위와 목적이 동시에 이루어지고 (ex 은행계좌 입출금)

비동기는 추구하는 행위와 목적이 다를 수도 있고, 동시에 이루어지지도 않는다.

(ex 시험지에 대한 학생과 선생님의 목적 차이)

블록과 논블록 

동기, 비동기와 연결되는 개념이다. 

블록 상태는, 요청을 처리하기 까지 계속 대기해야 하는 상태를 의미한다.

논블록 상태는, 블록상태와 반대로, 대기하지 않고 제약없이 자유롭게 다른 요청들을 사용할 수 있는 상태를 의미한다.