[RxSwift] Schedulers

kimdocs...📄·2021년 5월 6일
1

✔️ Schedulers

dispatch queue와 동일하지만 RxSwift에서는 여러가지의 스케줄러가 이미 정의되어 있으며 대부분의 상황에서 사용 가능 하므로 개발자가 자신만의 스케쥴러를 생성할 일은 없을 것입니다.

ObserveOnSubscribeOn이 Schedulers로 작동되는 대표적인 두 연산자인데요!

  • SubscribeOn : 시작할 스케쥴러를 결정
  • ObserveOn : 어느 스케줄러에서 observe할 것인지 결정

✨observeOn subscribeOn 차이

observeOn은 Observable이 아이템을 전파할 때 사용할 스레드를 지정하고
subscribeOn은 구독(subscribe)에서 사용할 스레드를 지정합니다.

🛠 Schedulers의 종류

📓 Serial vs Concurrent

직렬큐 : 분산 처리 시킨 작업을 다른 한 개의 쓰레드에서 처리하는 큐
동시큐 : 분산 처리 시킨 작업을 다른 여러개의 쓰레드에서 처리하는 큐

but, 여러 개의 직렬큐를 만들어 처리한 다면 각각의 직렬 큐 별로 하나의 쓰레드에 작업을 할당하지만 각각의 큐는 동시(Concurrent)에 동작합니다.

1) Main (Serial)

  • 메인 쓰레드에서 가장 최상단에 존재
  • UI를 갱신하려면 이 스케줄러를 이용해야함
  • MainSchedule.asyncInstance는 자주 쓰이지 않고, 가능하면 쓰는걸 회피하는 것이 좋음

2) SerialDispatchQueue (Serial)

  • background에서 추출하는 일을 처리할 때 사용

3) CurrentThread (Serial)

  • 현재 있는 쓰레드에서 작업이 실행됨
  • 이미 실행 중이라면 예정되어 있던 액션은 저장되고 현재 실행 중인 액션과 모든 전에 저장되었던 액션이 실행 종료되고나서야 실행됨

4) ConcurrentDispatchQueue (Concurrent)

  • SerialDispatchQueue처럼 추출하는 일을 할 때 사용, 단 병렬적!

5) OperationQueue (Concurrent)

  • NSOperationQueue에서 실행되어야 할 작업을 처리함

6) Test

  • 단지 테스트를 위한 것이며 production code에는 사용하지 않음
  • RxTest 라이브러리에 존재
profile
👩‍🌾 GitHub: ezidayzi / 📂 Contact: ezidayzi@gmail.com

0개의 댓글