请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

在runblocking内部调用launch方法的时候不会导致runblocking的协程体挂起么。

在runblocking内部调用launch方法的时候不会导致runblocking的协程体挂起么。

正在回答 回答被采纳积分+3

1回答

bennyhuo 2022-08-17 16:58:53
launch 不会,不是挂起函数
0 回复 有任何疑惑可以回复我~
  • 提问者 慕粉5199794 #1
    BlockingCoroutine 里面的 joinBlocking日志的打印次数不是很理解,它不是一个while死循环么,如果是resume恢复的时候调用了dispatch然后offer进来循环一次打了日志,那这个resume的调用时机是哪里,job.join不是只是增加了一个回调并且等待launcher里面执行完么,那不是不会立马执行这个resume,为啥会触发 joinBlocking的打印日志,后面的delay也是这样,为啥一调用delay就打印了,delay不是也没有这么快resume.
    回复 有任何疑惑可以回复我~ 2022-08-17 17:53:01
  • 同学可能对里面的blockingqueue需要多关注一下,每当外部有offer调用的时候,死循环那里就会在take的地方返回,返回的就是协程恢复之后要执行的逻辑。同学试试把日志放到take之后,看看会有什么不一样。
    回复 有任何疑惑可以回复我~ 2022-08-17 18:14:30
  • 提问者 慕粉5199794 回复 bennyhuo #3
    那offer的调用时机不是应该在resume的时候才会调用么,job.join还有deley不是要等结束才会触发resume,但是我看日志里的这个时间,发现一调用到job.join还有deley就打了这个joinBlocking日志。
    回复 有任何疑惑可以回复我~ 2022-08-17 18:20:35
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信