코루틴(3)
-
Coroutine Flow BackPressure & Buffer
BackPressure 업스트림 생산자가 다운스트림 소비자에게 스트림을 emit하는데, 소비자가 emit속도를 맞춰 방출할 수 없을 때 발생 ( 처리속도 고려 없이 emit )메모리 사용 및 성능 문제가 발생해결하기 위한건? → buffer Buffer아래와 같이 적용하면 됩니다lifecycleScope.launch { flowOf("A","B","C","D","E") .onEach { println("Wizard emits: $it") } .buffer() .collect { println("Lady collects: $it") delay(2000) } } 요것이Wizard emits A Lady collects A Wizard emits B Lady collects B Wizard emits C La..
2023.11.30 -
RxJava vs Coroutines
시작 Flowable CoroutineScope(dispatchers) 0..10 range(0, 10)(RxJava에서 제공) (0..9)(코틀린 문법) 시작 스케줄러 subscribeOn(Schedulers.io()) Dispatchers.Default 중간 스케줄러 변경 observeOn(Schedulers.io()) launch(Dispatchers.Main) index + 1 map {} map {} (코틀린 stream 문법) index > 4 filter {} filter {} (코틀린 stream 문법) 출력 subscribe의 onNext에서 출력 (구독을 통한 실행) launch를 통한 MainThread로 변경 후 출력 왼쪽이 rxjava, coroutine이다.
2022.06.20 -
비동기처리에서 특정 기능들만 순서대로 처리하기
업데이트 쳐내느라 새로 알게된거 하나도 정리 안 했다..ㅎ 어쨌든 대충 테스트배포 끝냈으니 기억을 위해 기록한다. 적어도 통신을 이용하는 어플리케이션을 개발하다보면, 통신에 관련된 것을 전부 비동기로 처리하게 된다. 당연함....동기로 하면 괴오래걸림;; 그러나 가끔은 몇 개를 순서대로 처리해야 할 일이 생긴다. 예를 들면 뭐 1번의 값을 받아온 후에 2번이 돌아가야한다던지... 그럴때를 위한 기능들이다. 1. withContext : 해당 작업을 끝낼 때 까지 코루틴을 일시정지하기 위해 사용한다 - async와 동일한 결과값을 반환한다 - async{ }.await() 과 유사 - 코루틴 내부나 susfend 함수 안에서 구현이 가능 - 콜백이 필요 없이 코드의 쓰레드 풀을 제어할 수 있기 때문에 네트..
2022.03.23