异步编程 - 这很好但是谁做到了?

时间:2013-08-04 09:25:21

标签: node.js asynchronous

让我先从一个着名的异步编程示例开始:

var fs = require('fs');
fs.readFile('./myhope', function(err, data){
  //Doing something with my hope!
  console.log('Dear world my hope is %s', data);
});
console.log('Help me nurture it');

哎呀但输出会要求你在告诉你之前帮助我培养我的希望。因为它是异步的。
我的问题是世界上谁正在读取文件并将其存储在缓冲区中,因为节点的唯一线程(它的单线程)正在忙于输出“帮助我培养它”!
是否就像那个节点给出了这样的指令'亲爱的O / S你能为我读这个文件吗?当你完成它之后只需调用那个回调!不要担心我的单线程循环会处理它'

1 个答案:

答案 0 :(得分:4)

  

亲爱的O / S你可以为我阅读这个文件,当你完成它的时候   打电话给那个回调!

就是这样,基本上。 Async IO使用OS内核工具向IO注册回调。在IO运行时,根本没有使用线程。甚至不是后台主题。

回调在节点进程内部立即运行,并将工作项排入事件循环。