반응형
프로그래밍을 하다 보면 동기적, 비동기적이라는 말을 듣곤 한다.
여기서 말하는 동기와 비동기가 뭔지에 대해 알아보도록 하자.
동기적 처리(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 |