non-blocking是怎么体现出来的

来源:11-2 协程的基本概念

aiqingyuyan

2020-06-25

这几天反复在想这个问题,都说异步non blocking,但这个non blocking是怎么体现出来的,比如拿案例代码来说:

try {
   val user = githubApi.getUser(uid)
   showUser(user)
} catch (e: Exception) {
	...
}

githubApi.getUser(uid) 虽然可以被分配到另一个线程去执行来实现异步,但执行整个coroutine的主线程还是会不可避免的要等待user的返回,也就还是会block主线程来等待,所以感觉这个异步non-blocking还是会block主线程,所以我就疑惑这个non-blocking到底解塞了什么?还是我理解有偏差?希望benny解惑

写回答

1回答

bennyhuo

2020-06-25

不会阻塞协程的执行所在的线程。协程执行过程中可能会在多个线程中执行,协程不会固定在一个线程上。

你先多看几遍视频吧。有疑惑是正常的。

0
2
bennyhuo
回复
aiqingyuyan
嗯,逻辑上其实差不多,但形式上异步变同步了呀
2020-06-26
共2条回复

学会Kotlin 突破开发语言瓶颈

如果有一门语言可以取代Java,那么它一定是Kotlin。

1760 学习 · 481 问题

查看课程