
디스패치 세마포어를 알아보기 전에 세마포어는 무엇일까요? 세마포어는 공유된 자원의 데이터를 여러 프로세스가 접근하는 것을 막는 것입니다. 뮤텍스는 공유된 자원의 데이터를 여러 쓰레드가 접근하는 것을 막는 것입니다. 또한 세마포어는 뮤텍스가 될 수 있습니다. (그 반대는 불가합니다.) 이제 디스패치 프레임워크 내에 있는 디스패치 세마포어 클래스에 대해서 알아보겠습니다. 디스패치 세마포어를 사용하게 된 계기는 async한 작업을 sync하게 변경시켜보는 시도에 세마포어를 사용하면 어떨까 싶었고, 한 번도 사용해보지 못했던 클래스라 궁금했었기에 사용해봤습니다. 그럼 애플에서 제공하는 공식문서를 살펴봅시다. 디스패치 세마포어란 다중 실행 콘텍스트에서 자원 접근을 제어하는 객체입니다. 디스패치 세마포어는 전통적..

디스패치 그룹은 단일 장치와 같이 task들의 그룹을 모니터 하는 것입니다. 디스패치 그룹을 사용하게 된 이유는 여러 개의 request를 날렸고 response가 끝나는 시점을 잡아 한 번에 UI를 업데이트시키기 위해 DispatchGroup을 사용하게 되었습니다. DispatchGroup을 사용하기 이전에는 어떻게 처리했냐면.. 음 프로퍼티 옵서버를 사용했습니다. didSet을 사용하면 프로퍼티가 변경된 바로 직후를 파악할 수 있어서 그냥 프로퍼티 옵저버를 사용했습니다. 다시 말해 API콜을 날리면 response데이터로 weatherInfo을 하나씩 받게 되고, 받은 데이터를 weather에 append 해주는 방식으로 처리했습니다. 위와 같이 제가 초기에 구현했던 코드로 여러 reponse데이터를..

DispatchQueue는 앱의 메인 스레드 또는 백그라운드 스레드에서 작업을 직렬 또는 병렬로 실행을 관리하는 오브젝트입니다. DispatchQueue는 DispatchObject를 상속하고 있는 클래스입니다. DispatchObject는 OS_object를 상속하고 있으며 많은 디스패치 오브젝트 타입을 가집니다. 예를 들어 DispatchQueue, DispatchGroup, DispatchSource등이 있습니다. 또한 기본적인 디스패치 오브젝트 인터페이스를 사용하면 메모리 관리, 실행, 일시중지 및 재실행 등을 수행할 수 있습니다. 디스패치 큐는 앱이 블록 개체 형태로 작업을 제출할 수 있는 FIFO 큐입니다. 디스패치 큐는 작업을 순차적serially으로 또는 동시 concurrently에 실행..
- Total
- Today
- Yesterday
- 책
- Xcode
- stanford SwiftUI
- Animation
- 머신러닝
- objc
- 알고리즘
- ios
- leetcode
- objective-c
- SWIFT
- 문자열
- Deep learning
- ARC
- Algorithm
- 책 추천
- rxswift
- 스위프트
- 애니메이션
- 스위프트UI
- RX
- 딥러닝
- swiftUI
- iOS SwiftUI
- wwdc
- swift5
- ReactiveX
- 독서
- 책 후기
- string
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |