关于nodeIO非阻塞实现原理。
发布于 12 年前 作者 cloudaice 7287 次浏览 最后一次编辑是 8 年前

还是对于非阻塞的IO感兴趣。知道node的非阻塞IO用法,知道回调函数的方式,但是现在我想知道这里面是怎么实现的。一行一行的代码肯定是顺序执行的,上一行代码执行的任务没有完成,怎么可以执行下一行代码呢?其实我想知道这种非阻塞回调的内部原理是什么?不知道其他语言是不是也有这样的类似的用法。反正对于这种方式的实现,很想知道内部的实现原理是什么?

8 回复

已经写过这方面的文字。但是还没有发表出来 - -

我刚看完这篇文章的,它只是说了怎么用,演示了一下效果,但是并没有说明内部怎么实现的。

linux下,你想了解实现,可以先看看epoll。

正找着epoll,这才是我要的答案啊……

@cloudaice Linux和BSD沒有原生的異步I/O機制,但有近似於異步I/O的實現如epoll, kqueue等。Windows和Solaris支持真正的異步,即IOCP。

var fs = require(“fs”); fs.readFile("./testfile", “utf8”, function(error, file) {
if (error) throw error;
console.log(“我读完文件了!”); }); console.log(“我不会被阻塞!”);

这个readFile函数的功能可以实现Node.js下的异步读取文件,基于此,可以不可以写个类似readFile的函数(如operateCRUD)来实现相关数据库的操作?这样的话是不是不同请求(C,R,U,D)之间就不会阻塞了?谢谢~

@byvoid 看了这里的介绍。是node在实现的时候用了一个中间的层,最后使用线程池来实现

回到顶部