xref: /aosp_15_r20/external/kotlinx.coroutines/README.md (revision 7a7160fed73afa6648ef8aa100d4a336fe921d9a)
1*7a7160feSAndroid Build Coastguard Worker# kotlinx.coroutines
2*7a7160feSAndroid Build Coastguard Worker
3*7a7160feSAndroid Build Coastguard Worker[![Kotlin Stable](https://kotl.in/badges/stable.svg)](https://kotlinlang.org/docs/components-stability.html)
4*7a7160feSAndroid Build Coastguard Worker[![JetBrains official project](https://jb.gg/badges/official.svg)](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
5*7a7160feSAndroid Build Coastguard Worker[![GitHub license](https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg?style=flat)](https://www.apache.org/licenses/LICENSE-2.0)
6*7a7160feSAndroid Build Coastguard Worker[![Download](https://img.shields.io/maven-central/v/org.jetbrains.kotlinx/kotlinx-coroutines-core/1.8.1)](https://central.sonatype.com/artifact/org.jetbrains.kotlinx/kotlinx-coroutines-core/1.8.1)
7*7a7160feSAndroid Build Coastguard Worker[![Kotlin](https://img.shields.io/badge/kotlin-1.9.21-blue.svg?logo=kotlin)](http://kotlinlang.org)
8*7a7160feSAndroid Build Coastguard Worker[![Slack channel](https://img.shields.io/badge/chat-slack-green.svg?logo=slack)](https://kotlinlang.slack.com/messages/coroutines/)
9*7a7160feSAndroid Build Coastguard Worker
10*7a7160feSAndroid Build Coastguard WorkerLibrary support for Kotlin coroutines with [multiplatform](#multiplatform) support.
11*7a7160feSAndroid Build Coastguard WorkerThis is a companion version for the Kotlin `1.9.21` release.
12*7a7160feSAndroid Build Coastguard Worker
13*7a7160feSAndroid Build Coastguard Worker```kotlin
14*7a7160feSAndroid Build Coastguard Workersuspend fun main() = coroutineScope {
15*7a7160feSAndroid Build Coastguard Worker    launch {
16*7a7160feSAndroid Build Coastguard Worker       delay(1000)
17*7a7160feSAndroid Build Coastguard Worker       println("Kotlin Coroutines World!")
18*7a7160feSAndroid Build Coastguard Worker    }
19*7a7160feSAndroid Build Coastguard Worker    println("Hello")
20*7a7160feSAndroid Build Coastguard Worker}
21*7a7160feSAndroid Build Coastguard Worker```
22*7a7160feSAndroid Build Coastguard Worker
23*7a7160feSAndroid Build Coastguard Worker> Play with coroutines online [here](https://pl.kotl.in/9zva88r7S)
24*7a7160feSAndroid Build Coastguard Worker
25*7a7160feSAndroid Build Coastguard Worker## Modules
26*7a7160feSAndroid Build Coastguard Worker
27*7a7160feSAndroid Build Coastguard Worker* [core](kotlinx-coroutines-core/README.md) — common coroutines across all platforms:
28*7a7160feSAndroid Build Coastguard Worker  * [launch] and [async] coroutine builders returning [Job] and [Deferred] light-weight futures with cancellation support;
29*7a7160feSAndroid Build Coastguard Worker  * [Dispatchers] object with [Main][Dispatchers.Main] dispatcher for Android/Swing/JavaFx (which require the corresponding artifacts in runtime) and Darwin (included out of the box), and [Default][Dispatchers.Default] dispatcher for background coroutines;
30*7a7160feSAndroid Build Coastguard Worker  * [delay] and [yield] top-level suspending functions;
31*7a7160feSAndroid Build Coastguard Worker  * [Flow] — cold asynchronous stream with [flow][_flow] builder and comprehensive operator set ([filter], [map], etc);
32*7a7160feSAndroid Build Coastguard Worker  * [Channel], [Mutex], and [Semaphore] communication and synchronization primitives;
33*7a7160feSAndroid Build Coastguard Worker  * [coroutineScope][_coroutineScope], [supervisorScope][_supervisorScope], [withContext], and [withTimeout] scope builders;
34*7a7160feSAndroid Build Coastguard Worker  * [MainScope()] for Android and UI applications;
35*7a7160feSAndroid Build Coastguard Worker  * [SupervisorJob()] and [CoroutineExceptionHandler] for supervision of coroutines hierarchies;
36*7a7160feSAndroid Build Coastguard Worker  * [select] expression support and more.
37*7a7160feSAndroid Build Coastguard Worker* [core/jvm](kotlinx-coroutines-core/jvm/) — additional core features available on Kotlin/JVM:
38*7a7160feSAndroid Build Coastguard Worker  * [Dispatchers.IO] dispatcher for blocking coroutines;
39*7a7160feSAndroid Build Coastguard Worker  * [Executor.asCoroutineDispatcher][asCoroutineDispatcher] extension, custom thread pools, and more;
40*7a7160feSAndroid Build Coastguard Worker  * Integrations with `CompletableFuture` and JVM-specific extensions.
41*7a7160feSAndroid Build Coastguard Worker* [core/js](kotlinx-coroutines-core/js/) — additional core features available on Kotlin/JS:
42*7a7160feSAndroid Build Coastguard Worker  * Integration with `Promise` via [Promise.await] and [promise] builder;
43*7a7160feSAndroid Build Coastguard Worker  * Integration with `Window` via [Window.asCoroutineDispatcher], etc.
44*7a7160feSAndroid Build Coastguard Worker* [test](kotlinx-coroutines-test/README.md) — test utilities for coroutines:
45*7a7160feSAndroid Build Coastguard Worker  * [Dispatchers.setMain] to override [Dispatchers.Main] in tests;
46*7a7160feSAndroid Build Coastguard Worker  * [TestCoroutineScope] to test suspending functions and coroutines.
47*7a7160feSAndroid Build Coastguard Worker* [debug](kotlinx-coroutines-debug/README.md) — debug utilities for coroutines:
48*7a7160feSAndroid Build Coastguard Worker  * [DebugProbes] API to probe, keep track of, print and dump active coroutines;
49*7a7160feSAndroid Build Coastguard Worker  * [CoroutinesTimeout] test rule to automatically dump coroutines on test timeout.
50*7a7160feSAndroid Build Coastguard Worker  * Automatic integration with [BlockHound](https://github.com/reactor/BlockHound).
51*7a7160feSAndroid Build Coastguard Worker* [reactive](reactive/README.md) — modules that provide builders and iteration support for various reactive streams libraries:
52*7a7160feSAndroid Build Coastguard Worker  * Reactive Streams ([Publisher.collect], [Publisher.awaitSingle], [kotlinx.coroutines.reactive.publish], etc),
53*7a7160feSAndroid Build Coastguard Worker  * Flow (JDK 9) (the same interface as for Reactive Streams),
54*7a7160feSAndroid Build Coastguard Worker  * RxJava 2.x ([rxFlowable], [rxSingle], etc), and
55*7a7160feSAndroid Build Coastguard Worker  * RxJava 3.x ([rxFlowable], [rxSingle], etc), and
56*7a7160feSAndroid Build Coastguard Worker  * Project Reactor ([flux], [mono], etc).
57*7a7160feSAndroid Build Coastguard Worker* [ui](ui/README.md) — modules that provide the [Main][Dispatchers.Main] dispatcher for various single-threaded UI libraries:
58*7a7160feSAndroid Build Coastguard Worker  * Android, JavaFX, and Swing.
59*7a7160feSAndroid Build Coastguard Worker* [integration](integration/README.md) — modules that provide integration with various asynchronous callback- and future-based libraries:
60*7a7160feSAndroid Build Coastguard Worker  * Guava [ListenableFuture.await], and Google Play Services [Task.await];
61*7a7160feSAndroid Build Coastguard Worker  * SLF4J MDC integration via [MDCContext].
62*7a7160feSAndroid Build Coastguard Worker
63*7a7160feSAndroid Build Coastguard Worker## Documentation
64*7a7160feSAndroid Build Coastguard Worker
65*7a7160feSAndroid Build Coastguard Worker* Presentations and videos:
66*7a7160feSAndroid Build Coastguard Worker  * [Kotlin Coroutines in Practice](https://www.youtube.com/watch?v=a3agLJQ6vt8) (Roman Elizarov at KotlinConf 2018, [slides](https://www.slideshare.net/elizarov/kotlin-coroutines-in-practice-kotlinconf-2018))
67*7a7160feSAndroid Build Coastguard Worker  * [Deep Dive into Coroutines](https://www.youtube.com/watch?v=YrrUCSi72E8) (Roman Elizarov at KotlinConf 2017, [slides](https://www.slideshare.net/elizarov/deep-dive-into-coroutines-on-jvm-kotlinconf-2017))
68*7a7160feSAndroid Build Coastguard Worker  * [History of Structured Concurrency in Coroutines](https://www.youtube.com/watch?v=Mj5P47F6nJg) (Roman Elizarov at Hydra 2019, [slides](https://speakerdeck.com/elizarov/structured-concurrency))
69*7a7160feSAndroid Build Coastguard Worker* Guides and manuals:
70*7a7160feSAndroid Build Coastguard Worker  * [Guide to kotlinx.coroutines by example](https://kotlinlang.org/docs/coroutines-guide.html) (**read it first**)
71*7a7160feSAndroid Build Coastguard Worker  * [Guide to UI programming with coroutines](ui/coroutines-guide-ui.md)
72*7a7160feSAndroid Build Coastguard Worker  * [Debugging capabilities in kotlinx.coroutines](docs/topics/debugging.md)
73*7a7160feSAndroid Build Coastguard Worker* [Compatibility policy and experimental annotations](docs/topics/compatibility.md)
74*7a7160feSAndroid Build Coastguard Worker* [Change log for kotlinx.coroutines](CHANGES.md)
75*7a7160feSAndroid Build Coastguard Worker* [Coroutines design document (KEEP)](https://github.com/Kotlin/KEEP/blob/master/proposals/coroutines.md)
76*7a7160feSAndroid Build Coastguard Worker* [Full kotlinx.coroutines API reference](https://kotlinlang.org/api/kotlinx.coroutines/)
77*7a7160feSAndroid Build Coastguard Worker
78*7a7160feSAndroid Build Coastguard Worker## Using in your projects
79*7a7160feSAndroid Build Coastguard Worker
80*7a7160feSAndroid Build Coastguard Worker### Maven
81*7a7160feSAndroid Build Coastguard Worker
82*7a7160feSAndroid Build Coastguard WorkerAdd dependencies (you can also add other modules that you need):
83*7a7160feSAndroid Build Coastguard Worker
84*7a7160feSAndroid Build Coastguard Worker```xml
85*7a7160feSAndroid Build Coastguard Worker<dependency>
86*7a7160feSAndroid Build Coastguard Worker    <groupId>org.jetbrains.kotlinx</groupId>
87*7a7160feSAndroid Build Coastguard Worker    <artifactId>kotlinx-coroutines-core</artifactId>
88*7a7160feSAndroid Build Coastguard Worker    <version>1.8.1</version>
89*7a7160feSAndroid Build Coastguard Worker</dependency>
90*7a7160feSAndroid Build Coastguard Worker```
91*7a7160feSAndroid Build Coastguard Worker
92*7a7160feSAndroid Build Coastguard WorkerAnd make sure that you use the latest Kotlin version:
93*7a7160feSAndroid Build Coastguard Worker
94*7a7160feSAndroid Build Coastguard Worker```xml
95*7a7160feSAndroid Build Coastguard Worker<properties>
96*7a7160feSAndroid Build Coastguard Worker    <kotlin.version>1.9.21</kotlin.version>
97*7a7160feSAndroid Build Coastguard Worker</properties>
98*7a7160feSAndroid Build Coastguard Worker```
99*7a7160feSAndroid Build Coastguard Worker
100*7a7160feSAndroid Build Coastguard Worker### Gradle
101*7a7160feSAndroid Build Coastguard Worker
102*7a7160feSAndroid Build Coastguard WorkerAdd dependencies (you can also add other modules that you need):
103*7a7160feSAndroid Build Coastguard Worker
104*7a7160feSAndroid Build Coastguard Worker```kotlin
105*7a7160feSAndroid Build Coastguard Workerdependencies {
106*7a7160feSAndroid Build Coastguard Worker    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1")
107*7a7160feSAndroid Build Coastguard Worker}
108*7a7160feSAndroid Build Coastguard Worker```
109*7a7160feSAndroid Build Coastguard Worker
110*7a7160feSAndroid Build Coastguard WorkerAnd make sure that you use the latest Kotlin version:
111*7a7160feSAndroid Build Coastguard Worker
112*7a7160feSAndroid Build Coastguard Worker```kotlin
113*7a7160feSAndroid Build Coastguard Workerplugins {
114*7a7160feSAndroid Build Coastguard Worker    // For build.gradle.kts (Kotlin DSL)
115*7a7160feSAndroid Build Coastguard Worker    kotlin("jvm") version "1.9.21"
116*7a7160feSAndroid Build Coastguard Worker
117*7a7160feSAndroid Build Coastguard Worker    // For build.gradle (Groovy DSL)
118*7a7160feSAndroid Build Coastguard Worker    id "org.jetbrains.kotlin.jvm" version "1.9.21"
119*7a7160feSAndroid Build Coastguard Worker}
120*7a7160feSAndroid Build Coastguard Worker```
121*7a7160feSAndroid Build Coastguard Worker
122*7a7160feSAndroid Build Coastguard WorkerMake sure that you have `mavenCentral()` in the list of repositories:
123*7a7160feSAndroid Build Coastguard Worker
124*7a7160feSAndroid Build Coastguard Worker```kotlin
125*7a7160feSAndroid Build Coastguard Workerrepositories {
126*7a7160feSAndroid Build Coastguard Worker    mavenCentral()
127*7a7160feSAndroid Build Coastguard Worker}
128*7a7160feSAndroid Build Coastguard Worker```
129*7a7160feSAndroid Build Coastguard Worker
130*7a7160feSAndroid Build Coastguard Worker### Android
131*7a7160feSAndroid Build Coastguard Worker
132*7a7160feSAndroid Build Coastguard WorkerAdd [`kotlinx-coroutines-android`](ui/kotlinx-coroutines-android)
133*7a7160feSAndroid Build Coastguard Workermodule as a dependency when using `kotlinx.coroutines` on Android:
134*7a7160feSAndroid Build Coastguard Worker
135*7a7160feSAndroid Build Coastguard Worker```kotlin
136*7a7160feSAndroid Build Coastguard Workerimplementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1")
137*7a7160feSAndroid Build Coastguard Worker```
138*7a7160feSAndroid Build Coastguard Worker
139*7a7160feSAndroid Build Coastguard WorkerThis gives you access to the Android [Dispatchers.Main]
140*7a7160feSAndroid Build Coastguard Workercoroutine dispatcher and also makes sure that in case of a crashed coroutine with an unhandled exception that
141*7a7160feSAndroid Build Coastguard Workerthis exception is logged before crashing the Android application, similarly to the way uncaught exceptions in
142*7a7160feSAndroid Build Coastguard Workerthreads are handled by the Android runtime.
143*7a7160feSAndroid Build Coastguard Worker
144*7a7160feSAndroid Build Coastguard Worker#### R8 and ProGuard
145*7a7160feSAndroid Build Coastguard Worker
146*7a7160feSAndroid Build Coastguard WorkerR8 and ProGuard rules are bundled into the [`kotlinx-coroutines-android`](ui/kotlinx-coroutines-android) module.
147*7a7160feSAndroid Build Coastguard WorkerFor more details see ["Optimization" section for Android](ui/kotlinx-coroutines-android/README.md#optimization).
148*7a7160feSAndroid Build Coastguard Worker
149*7a7160feSAndroid Build Coastguard Worker#### Avoiding including the debug infrastructure in the resulting APK
150*7a7160feSAndroid Build Coastguard Worker
151*7a7160feSAndroid Build Coastguard WorkerThe `kotlinx-coroutines-core` artifact contains a resource file that is not required for the coroutines to operate
152*7a7160feSAndroid Build Coastguard Workernormally and is only used by the debugger. To exclude it at no loss of functionality, add the following snippet to the
153*7a7160feSAndroid Build Coastguard Worker`android` block in your Gradle file for the application subproject:
154*7a7160feSAndroid Build Coastguard Worker
155*7a7160feSAndroid Build Coastguard Worker```kotlin
156*7a7160feSAndroid Build Coastguard WorkerpackagingOptions {
157*7a7160feSAndroid Build Coastguard Worker    resources.excludes += "DebugProbesKt.bin"
158*7a7160feSAndroid Build Coastguard Worker}
159*7a7160feSAndroid Build Coastguard Worker```
160*7a7160feSAndroid Build Coastguard Worker
161*7a7160feSAndroid Build Coastguard Worker### Multiplatform
162*7a7160feSAndroid Build Coastguard Worker
163*7a7160feSAndroid Build Coastguard WorkerCore modules of `kotlinx.coroutines` are also available for
164*7a7160feSAndroid Build Coastguard Worker[Kotlin/JS](https://kotlinlang.org/docs/reference/js-overview.html) and [Kotlin/Native](https://kotlinlang.org/docs/reference/native-overview.html).
165*7a7160feSAndroid Build Coastguard Worker
166*7a7160feSAndroid Build Coastguard WorkerIn common code that should get compiled for different platforms, you can add a dependency to `kotlinx-coroutines-core` right to the `commonMain` source set:
167*7a7160feSAndroid Build Coastguard Worker
168*7a7160feSAndroid Build Coastguard Worker```kotlin
169*7a7160feSAndroid Build Coastguard WorkercommonMain {
170*7a7160feSAndroid Build Coastguard Worker    dependencies {
171*7a7160feSAndroid Build Coastguard Worker        implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1")
172*7a7160feSAndroid Build Coastguard Worker    }
173*7a7160feSAndroid Build Coastguard Worker}
174*7a7160feSAndroid Build Coastguard Worker```
175*7a7160feSAndroid Build Coastguard Worker
176*7a7160feSAndroid Build Coastguard WorkerPlatform-specific dependencies are recommended to be used only for non-multiplatform projects that are compiled only for target platform.
177*7a7160feSAndroid Build Coastguard Worker
178*7a7160feSAndroid Build Coastguard Worker#### JS
179*7a7160feSAndroid Build Coastguard Worker
180*7a7160feSAndroid Build Coastguard WorkerKotlin/JS version of `kotlinx.coroutines` is published as
181*7a7160feSAndroid Build Coastguard Worker[`kotlinx-coroutines-core-js`](https://central.sonatype.com/artifact/org.jetbrains.kotlinx/kotlinx-coroutines-core-js/1.8.1)
182*7a7160feSAndroid Build Coastguard Worker(follow the link to get the dependency declaration snippet).
183*7a7160feSAndroid Build Coastguard Worker
184*7a7160feSAndroid Build Coastguard Worker#### Native
185*7a7160feSAndroid Build Coastguard Worker
186*7a7160feSAndroid Build Coastguard WorkerKotlin/Native version of `kotlinx.coroutines` is published as
187*7a7160feSAndroid Build Coastguard Worker[`kotlinx-coroutines-core-$platform`](https://central.sonatype.com/search?q=kotlinx-coroutines-core&namespace=org.jetbrains.kotlinx) where `$platform` is
188*7a7160feSAndroid Build Coastguard Workerthe target Kotlin/Native platform.
189*7a7160feSAndroid Build Coastguard WorkerTargets are provided in accordance with [official K/N target support](https://kotlinlang.org/docs/native-target-support.html).
190*7a7160feSAndroid Build Coastguard Worker## Building and Contributing
191*7a7160feSAndroid Build Coastguard Worker
192*7a7160feSAndroid Build Coastguard WorkerSee [Contributing Guidelines](CONTRIBUTING.md).
193*7a7160feSAndroid Build Coastguard Worker
194*7a7160feSAndroid Build Coastguard Worker<!--- MODULE kotlinx-coroutines-core -->
195*7a7160feSAndroid Build Coastguard Worker<!--- INDEX kotlinx.coroutines -->
196*7a7160feSAndroid Build Coastguard Worker
197*7a7160feSAndroid Build Coastguard Worker[launch]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/launch.html
198*7a7160feSAndroid Build Coastguard Worker[async]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/async.html
199*7a7160feSAndroid Build Coastguard Worker[Job]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/-job/index.html
200*7a7160feSAndroid Build Coastguard Worker[Deferred]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/-deferred/index.html
201*7a7160feSAndroid Build Coastguard Worker[Dispatchers]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/-dispatchers/index.html
202*7a7160feSAndroid Build Coastguard Worker[Dispatchers.Main]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/-dispatchers/-main.html
203*7a7160feSAndroid Build Coastguard Worker[Dispatchers.Default]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/-dispatchers/-default.html
204*7a7160feSAndroid Build Coastguard Worker[delay]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/delay.html
205*7a7160feSAndroid Build Coastguard Worker[yield]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/yield.html
206*7a7160feSAndroid Build Coastguard Worker[_coroutineScope]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/coroutine-scope.html
207*7a7160feSAndroid Build Coastguard Worker[_supervisorScope]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/supervisor-scope.html
208*7a7160feSAndroid Build Coastguard Worker[withContext]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/with-context.html
209*7a7160feSAndroid Build Coastguard Worker[withTimeout]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/with-timeout.html
210*7a7160feSAndroid Build Coastguard Worker[MainScope()]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/-main-scope.html
211*7a7160feSAndroid Build Coastguard Worker[SupervisorJob()]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/-supervisor-job.html
212*7a7160feSAndroid Build Coastguard Worker[CoroutineExceptionHandler]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/-coroutine-exception-handler/index.html
213*7a7160feSAndroid Build Coastguard Worker[Dispatchers.IO]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/-i-o.html
214*7a7160feSAndroid Build Coastguard Worker[asCoroutineDispatcher]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/as-coroutine-dispatcher.html
215*7a7160feSAndroid Build Coastguard Worker[Promise.await]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/await.html
216*7a7160feSAndroid Build Coastguard Worker[promise]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/[js]promise.html
217*7a7160feSAndroid Build Coastguard Worker[Window.asCoroutineDispatcher]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/as-coroutine-dispatcher.html
218*7a7160feSAndroid Build Coastguard Worker
219*7a7160feSAndroid Build Coastguard Worker<!--- INDEX kotlinx.coroutines.flow -->
220*7a7160feSAndroid Build Coastguard Worker
221*7a7160feSAndroid Build Coastguard Worker[Flow]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/index.html
222*7a7160feSAndroid Build Coastguard Worker[_flow]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/flow.html
223*7a7160feSAndroid Build Coastguard Worker[filter]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/filter.html
224*7a7160feSAndroid Build Coastguard Worker[map]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/map.html
225*7a7160feSAndroid Build Coastguard Worker
226*7a7160feSAndroid Build Coastguard Worker<!--- INDEX kotlinx.coroutines.channels -->
227*7a7160feSAndroid Build Coastguard Worker
228*7a7160feSAndroid Build Coastguard Worker[Channel]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.channels/-channel/index.html
229*7a7160feSAndroid Build Coastguard Worker
230*7a7160feSAndroid Build Coastguard Worker<!--- INDEX kotlinx.coroutines.selects -->
231*7a7160feSAndroid Build Coastguard Worker
232*7a7160feSAndroid Build Coastguard Worker[select]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.selects/select.html
233*7a7160feSAndroid Build Coastguard Worker
234*7a7160feSAndroid Build Coastguard Worker<!--- INDEX kotlinx.coroutines.sync -->
235*7a7160feSAndroid Build Coastguard Worker
236*7a7160feSAndroid Build Coastguard Worker[Mutex]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.sync/-mutex/index.html
237*7a7160feSAndroid Build Coastguard Worker[Semaphore]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.sync/-semaphore/index.html
238*7a7160feSAndroid Build Coastguard Worker
239*7a7160feSAndroid Build Coastguard Worker<!--- MODULE kotlinx-coroutines-test -->
240*7a7160feSAndroid Build Coastguard Worker<!--- INDEX kotlinx.coroutines.test -->
241*7a7160feSAndroid Build Coastguard Worker
242*7a7160feSAndroid Build Coastguard Worker[Dispatchers.setMain]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-test/kotlinx.coroutines.test/set-main.html
243*7a7160feSAndroid Build Coastguard Worker[TestCoroutineScope]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-test/kotlinx.coroutines.test/-test-coroutine-scope/index.html
244*7a7160feSAndroid Build Coastguard Worker
245*7a7160feSAndroid Build Coastguard Worker<!--- MODULE kotlinx-coroutines-debug -->
246*7a7160feSAndroid Build Coastguard Worker<!--- INDEX kotlinx.coroutines.debug -->
247*7a7160feSAndroid Build Coastguard Worker
248*7a7160feSAndroid Build Coastguard Worker[DebugProbes]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-debug/kotlinx.coroutines.debug/-debug-probes/index.html
249*7a7160feSAndroid Build Coastguard Worker
250*7a7160feSAndroid Build Coastguard Worker<!--- INDEX kotlinx.coroutines.debug.junit4 -->
251*7a7160feSAndroid Build Coastguard Worker
252*7a7160feSAndroid Build Coastguard Worker[CoroutinesTimeout]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-debug/kotlinx.coroutines.debug.junit4/-coroutines-timeout/index.html
253*7a7160feSAndroid Build Coastguard Worker
254*7a7160feSAndroid Build Coastguard Worker<!--- MODULE kotlinx-coroutines-slf4j -->
255*7a7160feSAndroid Build Coastguard Worker<!--- INDEX kotlinx.coroutines.slf4j -->
256*7a7160feSAndroid Build Coastguard Worker
257*7a7160feSAndroid Build Coastguard Worker[MDCContext]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-slf4j/kotlinx.coroutines.slf4j/-m-d-c-context/index.html
258*7a7160feSAndroid Build Coastguard Worker
259*7a7160feSAndroid Build Coastguard Worker<!--- MODULE kotlinx-coroutines-jdk8 -->
260*7a7160feSAndroid Build Coastguard Worker<!--- INDEX kotlinx.coroutines.future -->
261*7a7160feSAndroid Build Coastguard Worker<!--- MODULE kotlinx-coroutines-guava -->
262*7a7160feSAndroid Build Coastguard Worker<!--- INDEX kotlinx.coroutines.guava -->
263*7a7160feSAndroid Build Coastguard Worker
264*7a7160feSAndroid Build Coastguard Worker[ListenableFuture.await]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-guava/kotlinx.coroutines.guava/await.html
265*7a7160feSAndroid Build Coastguard Worker
266*7a7160feSAndroid Build Coastguard Worker<!--- MODULE kotlinx-coroutines-play-services -->
267*7a7160feSAndroid Build Coastguard Worker<!--- INDEX kotlinx.coroutines.tasks -->
268*7a7160feSAndroid Build Coastguard Worker
269*7a7160feSAndroid Build Coastguard Worker[Task.await]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-play-services/kotlinx.coroutines.tasks/await.html
270*7a7160feSAndroid Build Coastguard Worker
271*7a7160feSAndroid Build Coastguard Worker<!--- MODULE kotlinx-coroutines-reactive -->
272*7a7160feSAndroid Build Coastguard Worker<!--- INDEX kotlinx.coroutines.reactive -->
273*7a7160feSAndroid Build Coastguard Worker
274*7a7160feSAndroid Build Coastguard Worker[Publisher.collect]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-reactive/kotlinx.coroutines.reactive/collect.html
275*7a7160feSAndroid Build Coastguard Worker[Publisher.awaitSingle]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-reactive/kotlinx.coroutines.reactive/await-single.html
276*7a7160feSAndroid Build Coastguard Worker[kotlinx.coroutines.reactive.publish]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-reactive/kotlinx.coroutines.reactive/publish.html
277*7a7160feSAndroid Build Coastguard Worker
278*7a7160feSAndroid Build Coastguard Worker<!--- MODULE kotlinx-coroutines-rx2 -->
279*7a7160feSAndroid Build Coastguard Worker<!--- INDEX kotlinx.coroutines.rx2 -->
280*7a7160feSAndroid Build Coastguard Worker
281*7a7160feSAndroid Build Coastguard Worker[rxFlowable]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-rx2/kotlinx.coroutines.rx2/rx-flowable.html
282*7a7160feSAndroid Build Coastguard Worker[rxSingle]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-rx2/kotlinx.coroutines.rx2/rx-single.html
283*7a7160feSAndroid Build Coastguard Worker
284*7a7160feSAndroid Build Coastguard Worker<!--- MODULE kotlinx-coroutines-rx2 -->
285*7a7160feSAndroid Build Coastguard Worker<!--- INDEX kotlinx.coroutines.rx2 -->
286*7a7160feSAndroid Build Coastguard Worker<!--- MODULE kotlinx-coroutines-reactor -->
287*7a7160feSAndroid Build Coastguard Worker<!--- INDEX kotlinx.coroutines.reactor -->
288*7a7160feSAndroid Build Coastguard Worker
289*7a7160feSAndroid Build Coastguard Worker[flux]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-reactor/kotlinx.coroutines.reactor/flux.html
290*7a7160feSAndroid Build Coastguard Worker[mono]: https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-reactor/kotlinx.coroutines.reactor/mono.html
291*7a7160feSAndroid Build Coastguard Worker
292*7a7160feSAndroid Build Coastguard Worker<!--- END -->
293