gpt4 book ai didi

kotlin - Vert.x编写协程阻止代码的方法

转载 作者:行者123 更新时间:2023-12-02 13:17:42 32 4
gpt4 key购买 nike

我确实有同时使用协程和Vert.x的项目。

我正在尝试编写包装器函数以在vertx工作线程池上运行阻塞代码

就像是:

suspend inline fun <T> executeOnWorkerThread(crossinline block: () -> T) =
withContext(**Vertx-Worker-ThreadPool**) {
block()
}

所以它可以像
 suspend fun usage(obj: Any): String = executeOnWorkerThread {
try {
// blocking code
} catch (e: Exception) {
// Exception handling
}
}

但这不是vert.x方式。而且我找不到从vert.x中提取线程池的方法

最佳答案

suspend fun <T> awaitBlockingUnordered(block: () -> T): T {
return awaitResult { handler ->
val ctx = Vertx.currentContext()
ctx.executeBlocking<T>(
{ fut -> fut.complete(block()) },
false,
{ ar -> handler.handle(ar) }
)
}
}

关于kotlin - Vert.x编写协程阻止代码的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61954373/

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