[Programming] 비동기 관련 용어에 대해서 — 2

gaeng2y
3 min readNov 27, 2022

--

안녕하세요! 갱입니다. 🫡

이전 포스팅

에 이어서 오늘은 Sync / Async 와 Serial 과 Concurrent에 대해 알아보죠!

Sync / Async

Synchronous(동기)

동기는 내가 하고있는 작업이 끝나 완료에 대한 응답이 와야 다음 작업을 할 수 있는 것입니다.

다르게 말하면 요청에 대한 응답이 동시에 발생해야 한다.

즉, 내 작업이 끝나기 전까진 다른 작업을 수행하지 못한다

간단한 예를 들면 마트 계산대랑 비슷하다고 생각하시면 됩니다.

제가 라면, 물, 김치 세 품목을 장바구니에 넣고 계산대에 가면 직원분은 하나씩 물건에 대한 바코드를 찍으며 포스에 등록하는 것입니다.

Asynchronous(비동기)

비동기는 내가 하고 있는 작업은 하면서 다른 작업을 진행하는 것입니다.

다르게 말하면 요청에 대한 응답이 동시에 발생하지 않는다.

즉, 내 작업이 끝나기 전에 다음 작업을 실행한다.

위 마트 그림에서 예를 다시 들어보면 직원 분이 바코드 리더기 3개를 가져서 한번에 3개를 찍을 수 있는 느낌?

위의 내용들을 간단하게 정리하면

위 그림에서 동기는 20 + 7 + 10 + 8초로 작업을 해서 45초 비동기는 4개의 작업을 동시에 작업을 해서 제일 오래 걸리는 시간인 20에 끝나는 것입니다.

Serial / Concurrent

이 내용에 대해서 이해하시려면 큐(Queue)에 대해 이해해야합니다!(해당 포스팅에서 다루지 않음)

Serial(직렬)

내 Queue에 들어온 작업들을 순차적으로 실행 시키겠다.

  • Main 큐는 Serial Queue임

Concurrent(병렬)

내 Queue에 들어온 작업들을 병렬적으로 실행 시키겠다.

위와 똑같은 코드에서 큐를 main에서 global로 바꿔보면?

이렇게 순서가 다르게 나오는 걸 확인할 수 있습니다.

--

--