Computer Science

동기(Synchronous)와 비동기(Asynchronous)

닉네임못짓는사람 2022. 1. 11. 11:27
반응형

프로그래밍을 하다 보면 동기적, 비동기적이라는 말을 듣곤 한다.

여기서 말하는 동기와 비동기가 뭔지에 대해 알아보도록 하자.

 

동기적 처리(Synchronous)


  • 동시에 일어난다는 뜻, 요청과 결과가 동시에 일어날 때
  • 노드 A와 노드 B사이의 작업 처리 단위를 동시에 맞추겠다.
  • 요청한 결과가 그 자리에서 동시에 주어진다.

비동기적 처리(Asynchronous)


  • 동시에 일어나지 않는다는 뜻, 요청과 결과가 동시에 일어나지 않을 때
  • 노드 사이의 작업 처리 단위를 동시에 맞추지 않겠다.
  • 요청한 결과가 그 자리에서 주어지지 않는다.
  • 네트워크 통신과 같은 시간이 오래 걸리는 작업에 사용된다.

동기와 비동기


길동이는 다가오는 개학 전에 그동안 밀린 숙제들을 끝내려고 했다.

수학, 과학, 영어, 미술 등 길동이가 해야할 숙제가 매우 많다.

 

이때 길동이가 숙제를 "동기적"으로 처리한다면

혼자서 수학 숙제를 한 후, 과학 숙제, 그 후 영어, 미술...

이렇게 직접 순차적으로 하나씩 처리할 수 있다.

 

반면, 이를 "비동기적"으로 처리하면

수학 숙제는 둘리에게, 과학 숙제는 도우너에게, 영어 숙제는 마이콜에게

각각 맡겨서 동시에 처리할 수 있고, 길동이는 그동안 미술 숙제를 할 수 있다.

또한 각 숙제들이 끝나면 처리한 사람들이 이를 길동이에게 알려줄 수 있다.

 

장단점


동기의 경우 설계가 간단하며, 직관적이지만 그 작업이 끝날 때까지 아무런 작업도 할수 없다는 단점이 있다.

 

비동기의 경우 동기보다 비교적 복잡하지만, 작업이 끝날 때 까지 기다리지 않아도 되기 때문에

그동안 다른 작업을 수행할 수 있으므로 효율적인 자원의 사용이 가능하다.

 

반응형

'Computer Science' 카테고리의 다른 글

(메모리)코드, 데이터, 힙, 스택 영역  (0) 2022.01.15
[자료구조] 트리(Tree)  (0) 2022.01.13
JSON이란?  (0) 2022.01.10
탐색 알고리즘(선형, 이진, 해시)  (0) 2022.01.09
MVC, MVP, MVVM  (0) 2022.01.06