안녕하세요 🐶
빈 지식 채우기의 비니🙋🏻♂️ 입니다.
오늘은 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) 번의 작업이 완료 되어야만 (2)번의 작업이 시작된다.
- Sync 관점에서의 전체 실행 시간은 총 45초이다.
평소의 우리가 무의식적으로 써내려간 코드는 대부분이 Synchronous 입니다.
따라서 오래 걸리는 작업이 있을 경우 Asynchronous 로 처리를 해야만 합니다.
2-2. Asynchronous ( 비동기 )
Asynchoronous 의 사전적 의미는 다음과 같습니다.
결국 "동시에 발생하지 않는" 이라는 뜻을 가졌습니다.
여기서 "동시에 발생하지 않는"이라는 것은 "요청 - 응답"이 동시에 발생하지 않는다는 것입니다.
요청에 대한 응답이 동시에 발생하지 않는다.
즉 내 작업이 끝나기 전에 다른 작업을 실행한다.
Synchronous 와 같이 간단한 실행활 예를 들어봅니다.
하나의 예를 들어 설명드리면..
우리가 만약 카운터가 여러개 존재하는 커피숍에 갔다고 생각합니다.
여기서 Asynchronous 관점에서 보면
내 뒤의 사람의 주문은 내가 주문을 마칠 때까지 기다리지않고
다른 카운터에서 주문을 할 수가 있습니다.
왜냐하면, 커피 주문(요청) - 계산(응답)이 동시 발생하지 않기 때문입니다.
마찬가지로 컴퓨터 관점에서 보면 아래와 같습니다.
- (1) 번의 작업이 완료 되지 않아도 (2)번의 작업이 시작된다.
- Async 관점에서의 전체 실행 시간은 총 20초이다.
Asynchoronous에서는 요청에 대한 응답이 나중에 오기 때문에,
보통 Callback 함수로 들어옵니다.
2-3. Synchronous vs Asynchronous
이상으로 GCD 2편 - Sync vs Async 포스팅을 마치겠습니다.
틀린 부분이나 궁금한 사항은 댓글 남겨주세요~🤭
참고
'iOS📱 > Common' 카테고리의 다른 글
[디자인패턴] MVC, MVP, MVVM (0) | 2025.02.05 |
---|---|
[ iOS ] GCD 4편 - GCD ( Grand Central Dispatch ) (0) | 2023.01.19 |
[ iOS ] GCD 3편 - Serial vs Concurrent (0) | 2023.01.18 |
[ iOS ] GCD 1편 - 프로세스(Process) vs 쓰레드(Thread) (0) | 2023.01.11 |
[ iOS ] 메모리 구조 ( Code, Data, Stack, Heap ) (0) | 2023.01.04 |