从这里我发现node.js
实现了非阻塞 i/o 模型。但我不明白怎么做。
由于 javascript 是单线程的。单个线程如何执行 i/o 操作并同时执行进一步的进程。
从这里我发现node.js
实现了非阻塞 i/o 模型。但我不明白怎么做。
由于 javascript 是单线程的。单个线程如何执行 i/o 操作并同时执行进一步的进程。
确实,诸如 sleep 之类的操作会阻塞线程。但是 I/O 事件确实可以是异步的。
Node.js 为此使用了一个事件循环。事件循环是“处理和处理外部事件并将其转换为回调调用的实体”</p>
每当需要数据时,nodejs 都会注册一个回调并将操作发送到此事件循环。只要数据可用,就会调用回调。
http://blog.mixu.net/2011/02/01/understanding-the-node-js-event-loop/了解更多信息
处理的 I/O 在node.js
内部是多线程的。
它是单线程和异步的编程接口。
Ryan Dahl:JSConf 2009 上的原始 Node.js 演示文稿(Ryan 是 Node.js 的创建者)
该视频将回答您的问题。
JavaScript(v8) 的本质是事件回调(按钮 onclick="functions()" 等)。这就是 I/O 是多线程的。我们仍然需要编写代码来避免阻塞 I/O,只需要编写回调;否则代码将等待 db.query 响应并在执行下一行代码之前被阻塞。