【问题标题】:Sync-Async Blocking, Non-Blocking I/O同步-异步阻塞、非阻塞 I/O
【发布时间】:2023-09-10 03:04:02
【问题描述】:

问题是关于这些术语的解释。 这些是真是假:

  1. 阻塞 I/O == 同步非阻塞 I/O ?
  2. 非阻塞 I/O == 异步非阻塞 I/O == 异步阻塞 I/O?

我对@9​​87654321@的这种解释感到困惑:

Node.js 标准库中的所有 I/O 方法都提供 异步版本,非阻塞,并接受回调 功能

据此,有Sync Non-BlockingAsync 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()。

    【讨论】: