【问题标题】:Sync-Async Blocking, Non-Blocking I/O同步-异步阻塞、非阻塞 I/O
【发布时间】:2023-09-10 03:04:02
【问题描述】:
问题是关于这些术语的解释。
这些是真是假:
- 阻塞 I/O == 同步非阻塞 I/O ?
- 非阻塞 I/O == 异步非阻塞 I/O == 异步阻塞 I/O?
我对@987654321@的这种解释感到困惑:
Node.js 标准库中的所有 I/O 方法都提供
异步版本,非阻塞,并接受回调
功能
据此,有Sync Non-Blocking和Async Non-Blocking
你能说出(Non-Blocking || Sync Non-Blocking) 和Async Non-Blocking 的区别吗?
【问题讨论】:
标签:
node.js
blocking
nonblocking
【解决方案1】:
没有“同步非阻塞”功能。链接文章中最重要的一句话是:
阻塞方法同步执行,非阻塞方法异步执行。
这就是所有要说的。
I/O 可以是很多东西,比如用户输入或从文件中读取。用户输入是描述它的最佳方式:
同步函数会停止所有其他代码的执行,等待用户输入...
伪代码:
while(clicked==false){
clicked=check_for_user_click()
}
do_something_with_input()
do_everything_else()
这里 do_something_else 只会在用户点击后运行。
异步函数根本不会停止。
伪代码:
while(clicked==false){
clicked=check_for_user_click()
do_everything_else()
}
do_something_with_input()
这里会在每次检查用户输入之间调用 do_everything_else()。