From 84e75c0d7ccd8840d00990b0a8b24adf724580b7 Mon Sep 17 00:00:00 2001 From: Kevin Hwang Date: Wed, 21 May 2025 08:20:25 -0700 Subject: [PATCH 1/2] Add `doBlocking()` utility method for running coroutines. --- .../concurrent/src/Builders.concurrent.kt | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/kotlinx-coroutines-core/concurrent/src/Builders.concurrent.kt b/kotlinx-coroutines-core/concurrent/src/Builders.concurrent.kt index 7c0581b9d9..6c19b4b832 100644 --- a/kotlinx-coroutines-core/concurrent/src/Builders.concurrent.kt +++ b/kotlinx-coroutines-core/concurrent/src/Builders.concurrent.kt @@ -22,3 +22,18 @@ import kotlin.coroutines.* * block, potentially leading to thread starvation issues. */ public expect fun runBlocking(context: CoroutineContext = EmptyCoroutineContext, block: suspend CoroutineScope.() -> T): T + +/** + * Runs the given coroutine on the current thread, blocking until completion. + * + * This is like [runBlocking], but returns [Unit] which is a useful utility to run coroutines for their side effect + * when [Unit] is expected. + * + * Example: + * ```kt + * fun foobar() = runBlocking { ... } + * ``` + */ +public fun doBlocking(context: CoroutineContext = EmptyCoroutineContext, block: suspend CoroutineScope.() -> Unit) { + runBlocking(context, block) +} From bc34898ca90c960b6aada200ac332efb276c6c70 Mon Sep 17 00:00:00 2001 From: Kevin Hwang Date: Wed, 21 May 2025 08:27:34 -0700 Subject: [PATCH 2/2] Update Builders.concurrent.kt --- kotlinx-coroutines-core/concurrent/src/Builders.concurrent.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kotlinx-coroutines-core/concurrent/src/Builders.concurrent.kt b/kotlinx-coroutines-core/concurrent/src/Builders.concurrent.kt index 6c19b4b832..b6b74b3f12 100644 --- a/kotlinx-coroutines-core/concurrent/src/Builders.concurrent.kt +++ b/kotlinx-coroutines-core/concurrent/src/Builders.concurrent.kt @@ -34,6 +34,6 @@ public expect fun runBlocking(context: CoroutineContext = EmptyCoroutineCont * fun foobar() = runBlocking { ... } * ``` */ -public fun doBlocking(context: CoroutineContext = EmptyCoroutineContext, block: suspend CoroutineScope.() -> Unit) { +public fun doBlocking(context: CoroutineContext = EmptyCoroutineContext, block: suspend CoroutineScope.() -> Unit) { runBlocking(context, block) }