0

我试图了解在哪些情况下 nodejs 会比它的专业人士更快。我完全理解异步 I/O 和非阻塞 I/O 这两个术语,但想不出它有用的用例。有人可以给我一个例子吗?

4

2 回答 2

3

Node 是为什么异步 I/O 有用的一个典型例子。

节点(就用户而言)是单线程的,因此等待同步 I/O 将停止唯一正在执行代码的线程。由于无法保证 I/O 将花费多长时间,这可能/将使 Node 代码运行非常缓慢。

这就是 Node 几乎只使用异步 I/O 的原因,它允许单线程快速将 I/O 工作卸载到操作系统,同时继续执行代码而不会中断,直到操作系统通知 Node I/O 操作完成。

于 2013-01-20T07:28:11.787 回答
0

NodeJS 基本上是基于单线程概念的服务器端编码,因此我们必须管理该线程本身上的所有 I/O 和 CPU 工作。

我们知道,I/O 操作是正在运行的线程的基本阻塞操作(例如:I/O 操作可能包括从用户那里获取输入,或者从数据中心读取一个大文件;这些操作可能会挂起线程一段时间,这可能会导致挂起许多客户端请求)。

为了避免上述情况,NodeJS 提出了single thread asynchronous non-blocking I/O(也克服了在多线程情况下创建多个线程的开销)的概念。

于 2017-01-24T07:44:50.497 回答