Skip to content

Latest commit

 

History

History
73 lines (33 loc) · 3.27 KB

synchronous_Asynchronous.md

File metadata and controls

73 lines (33 loc) · 3.27 KB

동기와 비동기

동기는 데이터의 요청과 결과가 한 자리에서 동시에 일어나는것을 말한다

비동기란 동시에 일어나지 않는다는 의미이고

그래서 요청한 결과는 동시에 일어나지 않을거라는 약속이다.

동기와 비동기 방식의 장단점

동기의 장단점

장점 : 설계가 매우 간단하고 직관적이다.

단점 : 결과가 주어질 때까지 아무것도 못하고 대기해야 한다.

비동기의 장단점

장점 : 요청에 따른 결과가 반환되는 시간 동안 다른 작업을 수행할 수 있다.

단점 : 동기식보다 설계가 복잡하다.

동기방식의 예

img1 daumcdn-2 출처: 109dev의 블로그

  1. A의 계좌는 10,000원을 뺄 생각을 하고 있다.

  2. A의 계좌가 B의 계좌에 10,000원을 송금한다.

  3. B의 계좌는 10,000원을 받았다는 걸 인지하고, A의 계좌에 10,000원을 받았다고 전송한다.

  4. A, B 계좌 각 각 차감과 증가가 동시에 발생하였다.

순서를 보면 아시겠지만 A의 계좌와 B의 계좌는 서로 요청과 응답(1~3과정)을 확인한 후 같은 일을 동시에 진행하였습니다. (4번 과정) '계좌이체'같은 작업은 동기방식으로 처리해야 A에서 보냈는데 B는 못받는 상황이 생기지않는다

반대로 비동기방식은 위의 예제처럼 노드사이의작업처리단위를 동시에 맞추지않아도된다.

비동기 방식의 예

img1 daumcdn-3

출처: 109dev의 블로그

  1. 학생은 시험문제를 푼다

  2. 시험문제를 모두 푼 학생은 선생님에게 전송한다.

  3. 선생은 학생의 시험지를 채점한다.

  4. 채점이 다 된 시험지를 학생에게 전송한다.

  5. 학생은 선생이 전송한 시험지를 받아 결과를 확인한다.

학생과 선생은 시험지라는 연결고리가 있지만 시험지에 행하는 행위(목적)은 서로 다르다. 학생은 시험지를 푸는 역할을 하고 선생은 시험지를 채점하는 역할을 하고있다. 서로의 행위(목적)가 다르기때문에 둘의 작업 처리 시간은 일치하지 않고, 일치하지 않아도 된다.

비동기 방식 예제를 통해서 블록과 논블록의 차이를 간략하게 설명하자면, 학생이 시험지를 선생에게 건넨 후 가만히 앉아 채점이 끝나서 시험지를 돌려받기만을 기다린다면 학생은 블록 상태다. 하지만 학생이 시험지를 건넨 후 선생에게 채점이 완료되었다는 전송을 받기 전까지 다른 과목을 공부한다거나 게임을 한다거나 다른 일을 하게 되면 학생의 상태는 논블록 상태라고 할 수 있다.

정리하자면

동기와 비동기는 어떤 작업 혹은 그와 연관된 작업을 처리하고자 하는 시각의 차이다.

동기는 추구하는 같은 행위(목적)가 동시에 이루어지며, 비동기는 추구하는 행위(목적)가 다를 수도 있고, 동시에 이루어지지도 않는다.