首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Kotlin协同执行命令相同线程

Kotlin协同执行命令相同线程
EN

Stack Overflow用户
提问于 2022-07-28 15:32:32
回答 1查看 211关注 0票数 0

我遇到了一些代码,这些代码创建了带有单个线程上下文的CoroutineScope

代码语言:javascript
运行
复制
val serialThreadContext = newSingleThreadContext("mysinglethreadcontext")
fun myScope(): CoroutineScope = CoroutineScope(serialThreadContext)

然后在代码库的其他地方,在这个范围内启动协同.

代码语言:javascript
运行
复制
myScope().launch {
   someOtherMethod()
   ...
}

据我所知,所有这些创建的协同机制都将安排在同一个线程上,但我无法找到任何关于执行或暂停顺序的特定文档。

这在我的脑海中引起了以下问题:

如果

  1. 不包含任何suspend函数,那么线程还能挂起这个协同线吗?

当线程从调度程序中提取协同线时,

  1. 是否有保证的执行顺序?
EN

回答 1

Stack Overflow用户

发布于 2022-07-28 15:59:37

只有在挂起函数时才能暂停

  1. 协同服务。一旦调用了someOtherMethod,如果它不是挂起函数,就无法避免等待该函数返回,然后才能通过挂起释放线程。注意,标记为suspend的函数仍然不一定会挂起调用它的协同线。如果它内部不对其他调度程序执行挂起工作,它仍将占用您的调用线程.

  1. 没有执行命令的保证。您不应该依赖于单线程调度程序来尝试按顺序排列工作队列。有关如何使用通道创建工作队列的示例,请参见my answer here .
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73155436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档