티스토리 뷰
withContext, async 차이
suspend 코루틴 함수를 정의하는 키워드.
기존 스레드 작업과 코루틴, 비동기 작업 순차진행
Suspend - resume
suspend 함수가 호출될 때, 기존 진행 코드는 멈춘다.(suspend)
그리고 이 함수가 끝날 때 기존 진행 코드가 실행된다.(resume)
CoroutineContext가 지정한 쓰레드에서 동작.
IO Thread 함수 실행 ?
withContext : CoroutineContext를 실행 인자와 suspend 함수를 인자로 받고 그 CoroutineContext에서 그 suspend 함수를 실행시킵니다.
그리고 부모 CoroutineContext는 이 전체 실행이 끝나고 결과를 반환할 때까지 기다립니다.?
CoroutineContext로 변경하는 방법. Main Thread에서 실행한 코루틴을 다른 쓰레드로 돌아다니며 실행할 방법이 없겠죠.
- withContext(context) : 현재 코루틴의 컨텍스트를 전환. 주어진 블록이 실행될 때 코루틴은 이전 컨텍스트로 다시 전환.
- Async(context) : 주어진 컨텍스트에서 새 코루틴을 시작하고 반환 된 Deferred 작업에서 .awit()을 호출하면 호출 된 코루틴을 일시중단하고 생성 된 코루틴 내부에서 실행되는 블록이 반환 될 때 다시 시작됩니다
withContext 블록의 마지막 줄의 값이 반환 값이 된다.
withContext가 끝나기 전까지 해당 코루틴은 일시정지 된다.
->이러한 특성으로 인해 withContext를 이용하면 비동기 작업을 순차코드처럼 작성할 수 있게 된다.
비동기 작업을 하는 이유 자체가 순차적인 처리를 했을때 연산 시간을 줄이기 위함인데, 순차적으로 처리하도록 만들어버리면 비동기 작업의 장점이 사라진다.
withContext를 이용하면 결과값 수신이 필요한 코드의 순차화가 가능하다.
- suspend fun 키워드
- withContext + Dispatchers.IO
- uiScope
Suspend
코루틴 함수를 정의하는 키워드.
동기(동시에 일어나는) : 요청과 그 결과가 동시에 일어난다.
비동기(동시에 일어나지 않는) : 요청과 결과가 동시에 일어나지 않는다.
비동기 작업을 순차적으로 진행
코루틴을 시작한 CoroutineContext가 지정한 쓰레드에서 동작.
'안드로이드' 카테고리의 다른 글
Android) WorkManager Sending Data / Receiver Data (0) | 2023.08.07 |
---|---|
call vs Response 차이 (0) | 2023.07.31 |
MVVM 디자인패턴 (0) | 2023.03.29 |
어플리케이션 클래스 (0) | 2022.04.06 |
안드로이드 inflater (0) | 2020.01.10 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 언리얼루트모션활성화
- 애디티브
- 유니티 캔바스
- 언리얼엔진Locomotion
- 언리얼IK
- 보행이동기반블렌딩
- rootmotion
- 캔바스
- 쿠키
- 초조한유녕
- ui
- 언리얼엔진루트모션
- Inverse Kinematics
- additive
- #unity
- 캔버스
- #ui canvas
- 세션
- 언리얼엔진
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함