理解Node.js的异步非阻塞I/O模型
来源:互联网 发布:mac无法播放网页视频 编辑:程序博客网 时间:2024/05/16 17:14
对后台服务器编程不清楚,通过在网上查资料也就大概有写了解。
Apache对并发请求的处理方式是,对每个请求就创建一个线程处理,这个线程是堵塞的。因为线程的是占用内存的,所以一台服务器能支持的并发线程量是有限的。
node.js是单线程的模型,但是线程是异步非堵塞的
比如下面的例子:
var fs = require("fs");fs.readFile("./testfile", "utf8", function(error, file) { if (error) throw error; console.log("我读完文件了!");});console.log("我不会被阻塞!");
复制上面代码保存为test.js,并在同一目录下新建一个名为testfile的文件,用node命令运行test.js,你将看到以下输出:
我不会被阻塞!
我读完文件了!
这显然不符合传统的程序执行顺序,注意,这就是Node.js的非阻塞I/O了。
进行I/O操作,给readFile绑定一个回调函数function(error,file){},并在读取testfile完成后执行回调函数。期间,后面的代码继续执行,不受I/O阻塞。
这就是为什么先看到“我不会被阻塞!”而后看到“我读完文件了!”的缘故。
参考:
http://cnodejs.org/topic/4f50dd9798766f5a610b808a
- 理解Node.js的异步非阻塞I/O模型
- 浅解Node.js的异步非阻塞I/O模型
- 新手入门:理解Node.js的异步非阻塞I/O模型
- [转载]新手入门:理解Node.js的异步非阻塞I/O模型
- 关于对Node.js的“单线程非阻塞异步I/O”特点的个人理解
- 网络编程中阻塞与非阻塞,同步与异步、I/O模型的理解
- 网络编程中阻塞与非阻塞、同步与异步、I/O模型的理解
- 网络编程中阻塞与非阻塞,同步与异步、I/O模型的理解
- 网络编程中阻塞与非阻塞,同步与异步、I/O模型的理解
- 对I/O阻塞、非阻塞;同步I/O、异步I/O的理解
- 3. node.js 异步式I/O或非阻塞式I/O
- 简单理解I/O模型中的阻塞非阻塞与同步异步
- Windows I/O模型、同步/异步、阻塞/非阻塞
- Windows I/O模型、同步/异步、阻塞/非阻塞
- Windows I/O模型、同步/异步、阻塞/非阻塞
- I/O模型:阻塞、非阻塞 & 同步、异步
- Windows I/O模型、同步/异步、阻塞/非阻塞
- I/O模型:阻塞、非阻塞 & 同步、异步
- android中的runOnUiThread(runnable)
- Linux命令之hexdump - ”十六“进制查看器
- c++获取本机IP
- 深入理解ARM体系架构(S3C6410)---认识S3C6410
- pat 1017 Queueing at Bank(23分)
- 理解Node.js的异步非阻塞I/O模型
- sql server 修改IDENTITY 字段 的统计当前值
- 在Linux下安装JDK
- 重装系统后恢复wubi安装Ubuntu
- chapter 2.5: 内核模式编程基础
- 弹出div浮动登陆框 背景变灰
- 黑马程序员—学习小心知识整理
- ecryptfs 不支持cache=none
- The easy way to run Powershell 2.0 using .NET Framework 4.0