| import kotlinx.coroutines.* |
| import kotlinx.coroutines.debug.* |
| |
| suspend fun computeValue(): String = coroutineScope { |
| val one = async { computeOne() } |
| val two = async { computeTwo() } |
| combineResults(one, two) |
| } |
| |
| suspend fun combineResults(one: Deferred<String>, two: Deferred<String>): String = |
| one.await() + two.await() |
| |
| suspend fun computeOne(): String { |
| delay(5000) |
| return "4" |
| } |
| |
| suspend fun computeTwo(): String { |
| delay(5000) |
| return "2" |
| } |
| |
| fun main() = runBlocking { |
| DebugProbes.install() |
| val deferred = async { computeValue() } |
| // Delay for some time |
| delay(1000) |
| // Dump running coroutines |
| DebugProbes.dumpCoroutines() |
| println("\nDumping only deferred") |
| DebugProbes.printJob(deferred) |
| } |