본문 바로가기
iOS📱/Common

[ iOS ] GCD 2편 - Sync vs Async

by 텅빈비니 2023. 1. 12.
반응형

안녕하세요 🐶
빈 지식 채우기의 비니🙋🏻‍♂️ 입니다.

오늘은 GCD 2편! Sync vs Async 관해 알아보는 시간을 가지겠습니다.

 

GCD 1탄이 궁금하신 분들은 먼저 보고 오시면 더욱 이해가 쉬울거라 생각됩니다 ㅎㅎ :)

 

[ iOS ] GCD 1편 - 프로세스(Process) vs 쓰레드(Thread)

안녕하세요 🐶 빈 지식 채우기의 비니🙋🏻‍♂️ 입니다. 오늘은 GCD 1편! 프로세스와 쓰레드 관해 알아보는 시간을 가지겠습니다. 1. 개요 주니어 개발자로 프로젝트를 하다보면 Sync / Async 프

beanistory.tistory.com

 

1. 개요

이번 포스팅은 개발자분들이 실제 프로젝트를 진행하면서 진짜 많이 쓰고 찾아보았던 것들에 대해 공부해보려고 합니다.

바로봐로~~~

 

Sync vs Async

 

입니다. 실제로 어떻게 쓰는지에 대해서는 다음 포스팅에 다뤄보고,

오늘은 이론 위주로 설명드리겠슴돠!

 

2. Sync vs Async

바로 동기와 비동기에 대해 알아보겠습니다~.~

 

2-1. Synchronous ( 동기 )

Synchoronous 의 사전적 의미는 다음과 같습니다.

결국 "동시 발생" 이라는 뜻을 가졌기 때문에, 우리는 하나의 의문을 가질 수 있습니다.
여기서 "동시 발생"이라는 것은 작업의 동시에 발생한다는 것이 아니라
"요청 - 응답"이 동시에 발생한다는 것입니다.
요청에 대한 응답이 동시에 발생해야 한다.
즉 내 작업이 끝나기 전까지 다른 작업을 수행하지 못한다.


라고 이해를 해야합니다. 좀 헷갈리죠..?

응 나도 헷갈려..

하나의 예를 들어 설명드리면..
우리가 만약 카운터가 오직 1개만 존재하는 커피숍에 갔다고 생각합니다.
여기서 Synchronous 관점에서 보면

내 뒤의 사람의 주문은 내가 주문을 마칠 때까지 주문을 할 수가 없습니다.
왜냐하면, 커피 주문(요청) - 계산(응답)이 동시 발생해야 하기 때문입니다.

극단적으로 생각하면 앞사람 주문이 1시간이 걸리면, 
뒤에 사람은 끝날 때까지 주문을 못하는 겁니다.

 

자자. 그럼 위의 관점을 컴퓨터 작업이라고 생각해봅시다~

  1. (1) 번의 작업이 완료 되어야만 (2)번의 작업이 시작된다.
  2. Sync 관점에서의 전체 실행 시간은 45초이다.

평소의 우리가 무의식적으로 써내려간 코드는 대부분이 Synchronous 입니다.

따라서 오래 걸리는 작업이 있을 경우 Asynchronous 로 처리를 해야만 합니다.

 

2-2. Asynchronous ( 비동기 )

Asynchoronous 의 사전적 의미는 다음과 같습니다.

결국 "동시에 발생하지 않는" 이라는 뜻을 가졌습니다.
여기서 "동시에 발생하지 않는"이라는 것은 "요청 - 응답"이 동시에 발생하지 않는다는 것입니다.
요청에 대한 응답이 동시에 발생하지 않는다.
즉 내 작업이 끝나기 전에 다른 작업을 실행한다.

 

Synchronous 와 같이 간단한 실행활 예를 들어봅니다.

하나의 예를 들어 설명드리면..
우리가 만약 카운터가 여러개 존재하는 커피숍에 갔다고 생각합니다.
여기서 Asynchronous 관점에서 보면

내 뒤의 사람의 주문은 내가 주문을 마칠 때까지 기다리지않고
다른 카운터에서 주문을 할 수가 있습니다.
왜냐하면, 커피 주문(요청) - 계산(응답)이 동시 발생하지 않기 때문입니다.

마찬가지로 컴퓨터 관점에서 보면 아래와 같습니다.

  1. (1) 번의 작업이 완료 되지 않아도 (2)번의 작업이 시작된다.
  2. Async 관점에서의 전체 실행 시간은  20초이다.

Asynchoronous에서는 요청에 대한 응답이 나중에 오기 때문에,

보통 Callback 함수로 들어옵니다.

 

2-3. Synchronous vs Asynchronous

 

이상으로 GCD 2편 - Sync vs Async 포스팅을 마치겠습니다.

틀린 부분이나 궁금한 사항은 댓글 남겨주세요~🤭

 


참고

 

반응형