일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- textfield
- Python
- Rxjava
- androidStudio
- 코드포스
- pandas
- livedata
- activity
- MiTweet
- Hilt
- AWS
- 쿠링
- ProGuard
- 프로그래머스
- Coroutines
- Kotlin
- boj
- Codeforces
- GitHub
- MyVoca
- 백준
- architecture
- Gradle
- android
- Coroutine
- Compose
- 암호학
- TEST
- relay
- 코루틴
- Today
- Total
목록코루틴 (3)
이동식 저장소
목차 문제 정의 Volatile? Thread-safe가 필요하다 Thread confinement: fine-grained Thread confinement: coarse-grained Mutual exclusion Actors 참고 문헌 Dispatchers.Default 등의 멀티 스레드 dispatcher를 사용하면 여러 개의 코루틴을 동시에 실행할 수 있다. 이 과정에서 여러 동시성 문제가 발생할 수 있다. 가장 대표적인 문제로 shared mutable state가 있다. 운영체제 과목을 수강한 적이 있다면 잘 알고 있을 것이다. 요약하자면 수정 가능한 값에 여러 스레드가 동시에 접근하려고 할 때 어떻게 해야 하는지에 대한 문제이다. 값을 읽기만 한다면 모를까, 동시에 수정하려고 하면 매우 큰..
다양한 suspending 함수를 조합해 보자. 순차적으로 실행된다 다음의 두 suspending 함수가 있다. 두 함수는 어떤 유용한 계산을 수행한 후 결과를 반환한다. suspend fun doSomethingUsefulOne(): Int { delay(1000L) // 유용한 척 return 13 } suspend fun doSomethingUsefulTwo(): Int { delay(1000L) // 유용한 척.. return 29 } 두 함수를 순서대로 부르면 어떻게 될까? 순서대로 부른다는 것은 작업의 순서가 있다는 의미가 있다. 예를 들어 첫 번째 함수의 결과값에 따라 두 번째 함수를 부를 수도, 부르지 않을 수도 있지 않겠는가? val time = measureTimeMillis { val..
코루틴 코루틴이란 비동기적으로 실행되는 코드를 간단하게 작성하기 위해 사용할 수 있는 설계 패턴이다. 코루틴은 실행 중인 스레드를 중단시키지 않는 suspend를 지원하기 때문에 하나의 스레드에서 여러 개의 코루틴을 실행할 수 있다. 코루틴은 스택조차 없기 때문에 스레드보다도 메모리를 더 절약할 수 있다. 코루틴은 작업 범위를 설정하여 그 안에서 비동기 작업을 구조화한다. 글을 읽다 보면 무슨 말인지 알게 될 것이다. 코루틴은 부모-자식 간의 관계를 설정하여 자식의 취소(코드 중단)를 부모에게 전달할 수 있다. (안드로이드 한정) 많은 Jetpack 라이브러리에서 코루틴을 완벽히 지원하고 있다. 시작하기 전에 사실 코루틴은 코틀린의 기본 패키지에 포함되어 있지 않다. 플러그인을 로드해야 코루틴을 제대로 ..