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
不会阻塞协程的执行所在的线程。协程执行过程中可能会在多个线程中执行,协程不会固定在一个线程上。
你先多看几遍视频吧。有疑惑是正常的。
022020-06-26
相似问题