비동기 프로그래밍은 개발에 있어서 중요한 부분입니다.
하나의 앱은 한개의 프로세스가 순차적으로 이루어지는 것이 아닌 다양한 작업이 동시다발적으로 이루어지기 때문에 이러한 작업을 효율적으로 나누고 한번에 처리하도록 설계해야합니다.
설계하는데 있어서 중요한 비동기 프로그래밍에 대해서 적어보고자 합니다.
동기 / 비동기
동기(Synchronous): 작업이 완료될 때까지 대기한 후, 작업이 완료되면 다음 작업을 실행
비동기(Asynchronous): 작업 완료를 기다리지 않고 바로 다음 작업을 실행
직렬(serial) / 병렬(concurrent)
직렬(Serial): 순차적으로 진행
병렬(Concurrent): 동시에 진행
이름에서 의미를 찾아 볼 수 있지만, 직렬 병렬을 나누는 이유는 작업이 들어가는 큐에는 직렬 수행, 병렬 수행을 지정할 수 있기 떄문입니다.
Main Queue(Serial): Main thread로 serial queue를 사용합니다.
Global Queue(Concurrent): 그 외 thread로 concurrent queue를 사용합니다.
Custom Queue(Serial & Concurrent): 직렬, 병렬 수행을 직접 지정한 queue를 사용합니다.
DispatchQueue
iOS에서 비동기 프로그래밍을 설계할 수 있도록 지원하는 API입니다.
별도로 설치없이 사용할 수 있고 구문은 다음과 같습니다.
// Main Thread에서 비동기적 실행
DispatchQueue.main.async {
}
// Sub Thread에서 동기적 실행
DispatchQueue.global().sync {
}
// Sub Thread에서 비동기적 실행
DispatchQueue.global().async {
}
'Swift' 카테고리의 다른 글
숫자 야구게임을 프로토콜지향 프로그래밍으로 리팩토링 해보기 (0) | 2025.03.12 |
---|---|
순환 참조 (0) | 2025.02.17 |
Swift 자료구조 (0) | 2025.02.13 |