Flow是否阻塞主线程?难道官方文档错了?


#1

上面的打印,是不是说明flow是阻塞了主线程的


#2

应该是流的终端操作collect导致的,要等待执行结果。


#3

那官方说的 “主线程并未阻塞” 是什么意思呢?


#5

教程有误吧,这个文档链接可以放出来


#6

。。。。。。。。


#7

https://www.kotlincn.net/docs/reference/coroutines/flow.html#流


#8

感觉其中 “不阻塞主线程” 有些不严谨,其实会阻塞工作线程


#9

通过打印线程name可以看出都是运行在主线程的,你说的阻塞工作线程是什么意思?


#10

运行 simple().collect() 所处线程,并不一定在主线程


#11

上面的例子是在主线程啊


#12

不能说明阻塞主线程。首先要知道怎么才算阻塞了线程,协程是线程框架,是运行在线程上的,如果某个协程阻塞了线程,那么运行在这条线程上的其它协程将不能再执行。反之,如果这条线程的两个协程能轮流执行,那么就说明这个线程没有阻塞,官方示例就是这么来验证的。你既然附上了链接,想必也知道你这段代码和官方示例的不同吧,官方是在收集流之前启动了一个协程(并发),你是在收集流的操作完成后才启动的另一个协程,也就是说你这个示例能证明协程阻塞了,不能因此就说线程阻塞了。


京ICP备16022265号-2 Kotlin China 2017 - 2018