首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    再谈协程之suspend到底挂起了啥

    作为一个开发者,你可以把suspend函数看作是一个普通的函数,但它的执行可能被挂起,并在某个时候恢复。 ❝简而言之,suspend就是一种编译器生成的回调。...但是,当我们把函数标记为suspend时,编译器实际上在幕后做了什么? Suspend到底做了什么 回到loginUser的suspend函数,注意它调用的其他函数也是suspend函数。...在协程中,有个不成文的约定,那就是,suspend函数默认是不阻塞线程的,也就是说,suspend函数的调用者,不用为suspend函数运行在哪个线程而担心,suspend函数会自己处理它工作的线程,不大部分时候...❞ Kotlin编译器将识别函数何时可以在内部suspend。每个suspend point都将被表示为有限状态机中的一个状态。...从这个suspend函数功能来举例。

    1.2K10

    python087_suspend词源_append_depend

    [词根溯源]suspend词源_append_depend 回忆上次内容 上次了解了 方法 和 函数的 不同之处 方法(method) 函数(function) 需要对象调用 无需对象调用 可以根据...一起 pensate 衡量 一起来衡量 compensate 补偿 compensation compensation compensate 补偿 ation 的东西 补偿的东西 拆迁补偿 suspend...suspend /səˈspɛnd/ sus 同sub 从下面来的 pend 挂着的 从下面来的 挂着的 挂起 suspended 被挂起的 suspense suspense...悬而未决的 焦虑 suspend 挂起 吊,悬挂 推迟,暂停 挂起来和推迟有啥关系?...suspend 古代萨克逊人使用的刀叫做撒克逊刀 刃朝上 抽出来 就是要战斗 挂起来 suspend 维持了 就是不战斗了 推迟战斗了 暂停了 append append ap 强调

    20410

    为什么不推荐使用 stop、suspend 方法中断线程?

    我们知道像stop、suspend这几种中断或者阻塞线程的方法在较高java版本中已经被标记上了@Deprecated过期标签,那么为什么她们曾经登上了java的历史舞台而又渐渐的推出了舞台呢?...二、suspend的落幕 suspend方法的作用是挂起某个线程直到调用resume方法来恢复该线程,但是调用了suspend方法后并不会释放被挂起线程获取到的锁,正因如此就给suspend和resume...这哥俩贴上了容易引发死锁的标签,当然这也正是导致suspend和resume退出历史舞台的罪魁祸首。...同样我们看看java开发者为suspend的淘汰给出的理由: This method has been deprecated, as it is inherently deadlock-prone....从中我们可以得出以下结论: suspend具有天然的死锁倾向 当某个线程被suspend后,该线程持有的锁不会被释放,其他线程也就不能访问这些资源 suspend某个线程后,如果在resume的过程中出现异常导致

    1.1K30

    为什么不推荐使用 stop、suspend 方法中断线程?

    作者 | 浪舟子 来源 | https://blog.csdn.net/qq_40400960/article/details/112651249 我们知道像stop、suspend这几种中断或者阻塞线程的方法在较高...二、suspend的落幕 suspend方法的作用是挂起某个线程直到调用resume方法来恢复该线程,但是调用了suspend方法后并不会释放被挂起线程获取到的锁,正因如此就给suspend和resume...这哥俩贴上了容易引发死锁的标签,当然这也正是导致suspend和resume退出历史舞台的罪魁祸首。...同样我们看看java开发者为suspend的淘汰给出的理由: This method has been deprecated, as it is inherently deadlock-prone....从中我们可以得出以下结论: suspend具有天然的死锁倾向 当某个线程被suspend后,该线程持有的锁不会被释放,其他线程也就不能访问这些资源 suspend某个线程后,如果在resume的过程中出现异常导致

    77920

    Kotlin Vocabulary | 揭秘协程中的 suspend 修饰符

    Kotlin 协程把 suspend 修饰符引入到了我们 Android 开发者的日常开发中。您是否好奇它的底层工作原理呢?编译器是如何转换我们的代码,使其能够挂起和恢复协程操作的呢?...了解这些将会帮您更好地理解挂起函数 (suspend function) 为什么只会在所有工作完成后才会返回,以及如何在不阻塞线程的情况下挂起代码。...Suspend 的工作原理 回到 loginUser 挂起函数,注意它调用的另一个函数也是挂起函数: suspend fun loginUser(userId: String, password: String...编译器将会在函数签名中使用额外的 completion 参数 (Continuation 类型) 来代替 suspend 修饰符。...同时,您也能知道 suspend 是如何做到不阻塞线程的: 当方法被恢复时,需要被执行的信息全部被存在了 Continuation 对象之中!

    2.7K10

    【Kotlin 协程】协程的挂起和恢复 ① ( 协程的挂起和恢复概念 | 协程的 suspend 挂起函数 )

    文章目录 一、协程的挂起和恢复概念 二、协程的 suspend 挂起函数 一、协程的挂起和恢复概念 ---- 函数 最基本的操作 是 : 调用 call : 通过 函数名或函数地址 调用函数 ; 返回...函数 , 将 挂起点的信息 记录下来 , 然后执行耗时操作 , 执行完毕后 恢复 Resume ; 二、协程的 suspend 挂起函数 ---- 声明挂起函数 , 使用 suspend 在 fun...修饰 ; public suspend fun Test() { asynTask() updateMain() } public suspend fun asynTask() { // 子线程中执行异步任务...} public fun updateMain() { // 主线程更新 UI } 分析上述 挂起 suspend 函数 Test() 的 调用流程 : 执行 suspend fun Test()..., 先进行 挂起 suspend 操作 , ( 此时栈帧内容 : Test 函数 | asynTask 函数 , 左侧是栈底 ) 然后执行异步任务 , 异步任务执行完毕后 , 恢复 resume suspend

    2.3K40
    领券