【发布时间】:2015-07-10 16:55:58
【问题描述】:
我试图了解并发在像 nodejs 这样的单线程环境中是如何工作的。
假设我有这个代码:
var fs = require('fs');
fs.readFile('file1', function one(err, data) {
// some code...
});
fs.readFile('/file2', function two(err, data) {
// some code...
});
现在每个fs.readFile 调用都是异步的。因此,它们同时运行。但是如果这一切都发生在一个线程中,那么并发是如何实现的呢? function one 和 function two 是在同一线程上运行还是在不同线程上运行?
基本上,node.js 是如何处理并发的?
【问题讨论】:
-
这个答案是为浏览器编写的,但同样的原则也适用于 node.js:How does JavaScript handle AJAX responses in the background? 换句话说,node.js 基于事件队列和可能使用的本机代码类似地工作其他线程,但 Javascript 本身中的所有活动都通过事件队列同步到一个线程。
标签: node.js multithreading concurrency