이번 글에서는 애증의 단어들에 대한 개념을 정리해보려고 함
왜 애증이냐하면
아 이거 아는데 뭐였더라➡️구글링➡️아 맞아 이런 개념이었지 응응 이번에야말로 이해 완료.➡️시간 지남➡️아 이거 아는데 뭐였더라
이러한 무한의 굴레에 빠지게 만든 개념 중 하나이기 때문
이렇게 무한의 굴레에 빠진 것들이 몇개 있는데 (Rx라던가..) 이것들도 나중에 정리해야한다..
아무튼 이번에는 제일 기본이 되는 sync, async, serial, concurrent에 대해 정리해보는 걸루~
sync vs async
단일 작업에 대한 특성의 차이를 의미. 이전 작업과 다음 작업 간의 상관관계가 없음.
sync
앞서 작업하던 일이 다 끝난 후 다음 작업을 시작하는 방식
Swift에서는, DispatchQueue로 작업을 보낸 후 해당 작업이 모두 끝난 후에야 다음 작업(코드)을 시작하는 방식을 의미함.
async
앞서 작업하던 일이 다 끝나기를 기다리지 않고 이어서 다음 작업을 시작하는 방식
Swift에서는 DispatchQueue로 작업을 보낸 후 해당 작업이 끝나기를 기다리지 않고 다음 작업을 시작하는 것을 의미.
serial vs concurrent
다중 작업에 대한 관계의 차이를 의미. 이전 작업과 다음 작업 간의 상관관계가 있음.
하나의 DispatchQueue에서 여러 작업을 처리하는 방식을 의미.
serial != sync / async != concurrent 입니당~
serial
이전 작업과 다음 작업을 순차적으로 실행함.
Serial Queue는 한 번에 하나의 Task만 작업을 진행할 수 있음.
concurrent
Queue에 들어온 작업들을 동시다발적으로 실행시키겠다는 의미.
한 번에 여러개의 Task를 작업할 수 있음.
참고
https://babbab2.tistory.com/64
https://sujinnaljin.medium.com/ios-차근차근-시작하는-gcd-3-1e706a74086b
'Swift' 카테고리의 다른 글
[Swift] method swizzling (0) | 2023.01.11 |
---|---|
[Swift] Safe Index (0) | 2023.01.07 |
[Swift] dynamic var, @objc, @NSManaged (0) | 2023.01.07 |
[Swift] final (feat. Method Dispatch) (0) | 2023.01.05 |
#0. 목적 (0) | 2020.04.14 |