티스토리 뷰
Coroutine
Coroutine은 동기/비동기를 효율적으로 프로그래밍하기 위한 하나의 동시성 프로그래밍 설계 개념입니다. Kotlin뿐만 아니라 다른 언어에도 존재하는 개념이고 오래된 개념입니다.
Android에서 Coroutined은 비동기적으로 실행되는 코드를 간결하게 작성할 수 있고, Thread보다 성능이 좋으며, Jetpack에서 많은 기능을 지원하는 장점이 있습니다.
Thread vs Coroutine
Thread는 고유한 Stack가 할당되며 동시성을 보장하기 위해 OS가 스케쥴링을 하여 적합한 Thread를 실행하고 Context Switching으로 인한 오버헤드가 발생하고 중지된 Thread는 OS의 선택을 받기 위해 기다립니다(Blocking한다고 표현함).
Coroutine은 Light Weight Thread라고 부르며 동시성을 보장하는 것을 목표로 하지만 Stack이나 Thread가 할당되는 것이 아닌 객체로 관리되며 Context Switching이 아닌 객체를 자유롭게 스위칭 하면서 Context Switching으로 인한 오버헤드를 줄일 수 있으며 중지 됐을 때 상태를 Heap에 저장하고 다른 Coroutine이 실행되면서 Thread를 Blocking하지 않습니다. 중지된 Coroutine이 다시 재개될 때 Heap에 저장된 객체의 상태를 불러와서 중지된 시점부터 다시 작업을 이어갈 수 있습니다.
마무리
Process를 효율적으로 처리하기 위한 단위가 Thread라면 Thread를 더 효율적으로 처리하기 위한 개념이 Coroutine인 것 같다. 작업의 단위를 Object로 축소하고 Thread내의서 Object Switching을 통해 Thread Blocking과 Context Switching으로 인한 오버헤드를 줄일 수 있기 때문이다. 또한 Coroutine은 코드를 더욱 간결하게 작성할 수 있고, suspend, cancel등 강력한 기능을 지원하기 때문에 안쓸 이유는 없다고 생각한다.
'Android > Coroutine' 카테고리의 다른 글
| Android Coroutine - Job Lifecycle (0) | 2022.01.15 |
|---|---|
| Android Coroutine - Cancel (0) | 2022.01.08 |
| Android Coroutine - Coroutine Builder (0) | 2022.01.07 |
| Android Coroutine - CoroutineContext (0) | 2022.01.07 |
| Android Coroutine - Scope (0) | 2022.01.07 |
- Total
- Today
- Yesterday
- viewmodel
- CancellationException
- TDD
- ViewModelStoreOwner
- ViewModelProvider
- 클린코드
- rxjava
- clean code
- observable
- commit
- Kotlin
- DART
- null
- gradle
- Flutter
- Flowable
- ConcatAdapter
- 클린 코드
- Android
- DSL
- Exception
- 보이스카우트 규칙
- 함수
- 코루틴
- Widget
- isActive
- 연산자
- ConcatAdapter.Config
- Coroutine
- git
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
