Skip to content

阻塞与非阻塞(Blocking & Non-blocking)

阻塞与非阻塞描述的是:当你“等待结果”时,当前线程是否还能继续做别的事。

阻塞(Blocking)

阻塞意味着“停下来等结果”。

比如同步读取文件:

读文件 -> 卡住 -> 文件读完 -> 继续执行

非阻塞(Non-blocking)

非阻塞意味着“先发起请求,然后继续做别的事”。

发起读文件 -> 继续执行 -> 文件读完后回调

与同步/异步的关系

  • 同步/异步:什么时候拿到结果
  • 阻塞/非阻塞:等待时能不能干别的事

例如:

  • 同步 + 阻塞:最常见的传统模式。
  • 异步 + 非阻塞:事件循环常见模式。

进一步阅读

理解阻塞/非阻塞有助于你理解性能与响应性。

CC-BY 4.0 Licensed