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