gpt4 book ai didi

multithreading - 如何为当前线程创建协程Dispatcher?

转载 作者:行者123 更新时间:2023-12-03 12:58:19 25 4
gpt4 key购买 nike

是否可以为当前线程创建一个Dispatcher?检查此示例代码作为我想要完成的示例:

val dispatcher = if (parallel) {
Dispatcher.Default
} else {
// What should I write here so I just use the current thread to run doStuff?
}

val deferredList = list.map {
async(dispatcher) { doStuff(it) }
}

最佳答案

当你构建协程时,你将传递一个 CoroutineContext 作为参数。如果您不传递任何内容,则新协程将使用当前 CoroutineContext(其父上下文)构建。

你应该瞄准 CoroutineContext 而不是 Dispatcher:

val context = if (parallel) {
Dispatchers.Default
} else {
coroutineContext
}

val deferredList = list.map {
async(context) { doStuff(it) }
}

您还可以使用 Element 类型作为键单独“提取”上下文的每个 Element:

作业: coroutineContext[作业]

调度器: coroutineContext[ContinuationInterceptor]

异常处理程序: coroutineContext[CoroutineExceptionHandler]

名称: coroutineContext[CoroutineName]

关于multithreading - 如何为当前线程创建协程Dispatcher?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65531316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com