RxSwift
Scheduler
kkimin
2021. 8. 10. 15:41
Scheduler 간단 개념
우리가 아는 GCD의 개념과 유사하다.
Cocoa -> GCD
RxSwift -> Scehduler
Scheduler 는
Thread/ Dispatch Queue/ Operation Queue 가 모두 될 수 있다.
하나의 Thread에 두개의 Scheduler가 있을수도, 하나의 Scheduler에 두개의 Thread가 연결되어 있을 수 있다.
Global Queue = Background Scheduler
Serial Scheduler | Concurrent Scheduler |
기본 : CurrentThreadScheduler(미 지정시) | ConcurrentDispatchQueueScheduler |
MainScheduler = Main Thread | OperationQueueScheduler |
SerialDispatchQueueScheduler |
이 외에도 TestScheduler, CustomScheduler가 있다.
그럼 어떤식으로 Scheduler를 지정할까요?
let bag = DisposeBag()
let backgroundScheduler = ConcurrentDispatchQueueScheduler(queue: DispatchQueue.gloabl())
.observeOn(backgroundScheduler) // 이뒤는 지정한 Scheduler를 사용하겠다.
.map {
print(Thread.isMainThread ? "Main" : "Background")
}
// 이 외에도 방법이 있다.
// 호출시점이 중요하지 않은 .subscribeOn(MainScheduler.instance) 와 비교 해야한다.
// subscribeOn 은 observable이 시작되는 스케쥴러를 지정하는 개념이야.
// 이 외에도 방법이 있다.
// 호출시점이 중요하지 않은 .subscribeOn(MainScheduler.instance) 와 비교 해야한다.
// subscribeOn 은 observable이 시작되는 스케쥴러를 지정하는 개념이다.
위의 내용이 이해가 가지 않으면 직접 돌려보고 확인해보는게 좋다.
728x90