上述三种情况哪种才叫 Non-Blocking ?
因为我看了很多文档,不同的文档在上面三种不同的场景都用到了 Non-Blocking ,让我很疑惑
比如 https://projectreactor.io/docs/core/release/reference/#_blocking_can_be_wasteful ,So the parallelization approach is not a silver bullet
这句话就跟 reactor-core 没有基于 NIO ( Eventloop )这个矛盾了,然后它又说自己是 Non-Blocking
又比如 https://github.com/ReactiveX/RxJava/issues/5260 ,这里说 RxJava 不是实际的 Non-Blocking
请大佬解答一下上述三种情况哪种才叫 Non-Blocking ?
这个问题
1
misaka19000 2022-06-30 10:23:32 +08:00
|
2
misaka19000 2022-06-30 10:25:00 +08:00
非阻塞,指的就是线程或者协程等,这样的一个逻辑流,不会被卡在某些操作上面
|
3
ojh OP @misaka19000 根据你的文章的意思,SocketChannel#configureBlocking 设置为 false 就是非阻塞了,整体来说就是上面指的第 3 种。
|
4
ojh OP @misaka19000 "因为多路复用器所在的线程可能会阻塞,所以我们一般会把这些连接的读写操作放到新的线程中。",问一下为什么你这里说时间轮询线程会阻塞,读写事件准备了轮询线程去执行读写操作(非阻塞 IO ),依我看来只有没有事件的时候轮询线程才阻塞,没必要放到新的线程中去进行读写操作
|
5
mmdsun 2022-06-30 19:32:58 +08:00 via iPhone
|