일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
31 |
- http 역사
- apk 빌드 과정
- 디자인 패턴
- 뷰홀더
- 운영체제
- viewModelScope
- Android
- 플로이드워셜
- Dispatchers
- 절대 주소
- appcompatacitivity
- NestedScrollView
- flutter
- DiffUtil
- 자이고트
- http발전과정
- GetX
- recyclerview
- 프로세스
- appcompatactivity
- 리사이클러뷰
- 안드로이드
- 상태관리
- 데코레이터 패턴
- 내부 단편화
- 물리 메모리
- 리사이클러뷰풀
- Kotlin
- AsyncListDiffer
- AAC
- Today
- Total
목록Android/Coroutine (3)
hong's android
CoroutineScope 란? 모든 coroutine은 scope 내에서 실행되어야 합니다. GlobalScope는 별도의 생명주기를 신경 쓰지 않고 앱의 시작 ~ 종료까지 유지되는 scope이다. aac workmanager와 함께 백그라운드에서 장기간 실행 되어야 하는 경우 적합하다. CoroutineScope는 어떤 목적(네트워크 통신, io 등)을 가지고 종료하기 위한 scope이다. GlobalScope와 CoroutineScope은 CoroutineScope 인터페이스를 상속받는다. public interface CoroutineScope { /** * Context of this scope. */ public val coroutineContext: CoroutineContext } Glob..
코루틴 코루틴은 스레드 내부에 실행되는 경량 스레드입니다. Main - safe 한 동시성을 지원하고 콜백보다 가독성이 좋습니다. suspend 함수를 통해서 일시중단 - 재개할 수 있는 여러 진입 지점을 허용합니다. 이를통해 서브루틴들이 협력형으로 번갈아 가며 실행될 수 있다. 협력형으로 동작하기 위해 CPS 패러다임을 사용합니다. CPS(Continuation Passing Style) 패러다임 기본적인 원리는 매개변수로 콜백 인터페이스를 가진 Continuation 객체를 전달합니다. 매개변수를 받은 메소드에선 이를통해 다시 suspend된 메소드를 실행합니다. 결국 매개변수로 Continuation 객체를 전달하며 현재 supend된 시점에서 resume되게 만들어 같은 스레드 내부에서 협력형으로..

Coroutine Main-Safe 한 경량 스레드 선점/비선점 선점 : task는 스케쥴러에 의해 cpu에 할당된다. 다른 task가 할당됐을 때 스케쥴러에 의해서 cpu 사용권을 뺐을 수 있다. 비선점 : 스케쥴러가 cpu사용권을 뺐을 수 없다. 코루틴은 비선점 멀티 태스크이고 태스크 여러 개를 번갈아가면서 실행한다. (동시성 지원) 협력형 멀티태스크 다수의 태스크들이 실행시간을 나눠 갖는다. 태스크들은 서로 실행을 양보할 수 있다. 코루틴 - Task 단위를 스레드 내부 object들로 나눈다. - 스레드 내부에서 Object를 나눠서 실행하므로 콘텍스트 스위칭 x - 가벼운 비용으로 비동기 실행 - 동시성 제공, 병렬성 x - 스케쥴러가 아니라 프로그래머에 의해 실행, 중지, 재개 시점이 결정된다..