当前位置: 首页 > 知识库问答 >
问题:

谁负责暂停和继续执行相关规定?

司寇祖鹤
2023-03-14

就异步编程而言,这可能是一个非常基本的问题,但我试图阅读它,但找不到任何相同的资源。

假设:我对异步编程有一个大致的想法:

当我们开始阻塞操作(网络调用,从DB/文件中读取)时,我们可以将其委托给内核线程,这将使我们的应用程序线程保持空闲,以执行其他任务。内核线程等待作业完成,并在作业完成时向应用程序线程提供回调。

科鲁蒂斯:过去几天我一直在读关于科特林·科鲁蒂斯的书。不过,我认为概念wise coroutines是语言不可知论的。我得到的问题是:

共有1个答案

谭刚毅
2023-03-14

协同暂停是完全明确和一流的。当调用suspendcoroutine()suspendcancellablecoroutine()时,会发生这种情况,传入一个接收continution作为参数的块。

该块可以对continuation对象执行它想要的任何操作,当某人在某个地方调用continuation.Resume(resultValue()时,它将恢复。它恢复的线程最初是调用Resume()的线程,但Resume中的逻辑立即委托给负责的调度程序,然后通常将恢复提交给另一个线程或线程池。

Dispatcher逻辑也是一流的,您可以编写自己的Dispatcher。然而,这几乎从来不需要,因为只有少数几种有意义的方法可以做到这一点,Kotlin已经支持它们。

您还可以查看代码中的一个具体示例,该示例演示了suspendcoroutinecoroutine.resume()的裸用法,而没有分派程序添加到其中的层。

顺便说一句,您永远不会将阻塞操作委托给“内核线程”来使它们是非阻塞的。异步操作不会阻塞任何线程。例如,在低层,有一种选择器机制,当IO操作完成时,它接收来自IO操作的事件。它的工作方式非常类似于GUI线程中的事件循环。

 类似资料:
  • 问题内容: 我正在尝试创建一个线程,该线程在后台执行操作。我需要能够在需要时有效地“暂停”并稍后再次“恢复”。另外,如果我“暂停”该线程时正在执行某项操作,则该线程应使调用线程等到完成其操作为止。 我对Python中的多线程技术还很陌生,所以我还没走那么远。 除了线程正在做某事时调用了pause之外,我几乎可以做的所有事情都让调用线程等待。 这是我要在代码中实现的目标的概述: 我想我基本上需要一种

  • 本文向大家介绍JavaScript暂停和继续定时器的实现方法,包括了JavaScript暂停和继续定时器的实现方法的使用技巧和注意事项,需要的朋友参考一下 对于JavaScript的定时器来说没有严格意义上的暂停和重启,只有清除停止,但是可以通过一些‘障眼法'实现 以上所述是小编给大家介绍的JavaScript暂停和继续定时器的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复

  • 我使用Jersey和嵌入式Tomcat开发了REST服务器。 当我的客户端使用Jersey向我的服务器发送请求并添加其值为UTF-8编码的请求参数时,我会收到服务器端解码的参数。 我的问题是,谁负责解码这个参数?是雄猫吗?球衣<我可以禁用此功能吗?

  • 我制作了一个程序,要求用户输入5位数字,然后程序将查找这些数字的总和。我想知道我怎样才能使程序在计算一次之后一遍又一遍地要求一个数字。我希望用户再试一次,直到他自己想退出。

  • 我使用Java的rabbitmq-client(https://mvnrepository.com/artifact/com.rabbitmq/amqp-client),我需要实现以下场景: 在接收Rabbit消息时,如果怀疑内存中不适合所有等待的数据,则可能需要暂停特定队列的Rabbitmq消耗。 处理完一些消息后,需要再次打开以下一组消息的消耗。 根据需要重复。 使用amqp-client J

  • 问题内容: 我正在尝试在来电中暂停录音并在以后恢复录音。我正在使用andriod 并尝试在中录制。我尝试通过重设/停止录音来暂停/恢复,并以开头,是已停止/暂停的音频文件的,希望它可以追加,但是我没有运气。有没有办法实现这一目标或追加两张录音,或者我应该放弃。 码: 停止录制,但恢复失败并显示消息。 问题答案: 您问题的简单答案是: 您不能吗? 因此,在Stop停止后,尝试保存对SDCard的呼叫