nodejs之异步I/O
来源:互联网 发布:自动操作软件 编辑:程序博客网 时间:2024/05/20 08:44
今晚有空看了一下nodejs。
只要有两个知识点吧。
其中一个是定时器。两个函数。setImmediate(callback)和process.nextTick(callback).这两个函数都是要求立即出发callback时间。下面来看看用法。
setImmediate( function() { console.log('2');});process.nextTick( function() { console.log('3');});console.log('1');
结果是1,3,2;初步结果来看,显然,是process.nextTick优先级较高。其实,process.nextTick(callback).的回调函数放在数组上,而setImmediate(callback)结果放在链表上。首先是数组上的回调函数先执行完。然后才到链表。下面例子为证。
setImmediate( function() { console.log('5');});setImmediate( function() { console.log('6'); process.nextTick( function() { console.log('6.1'); });});setImmediate( function() { console.log('7');});process.nextTick( function() { console.log('2');});process.nextTick( function() { console.log('3'); setImmediate( function() { console.log('3.1'); });});process.nextTick( function() { console.log('4');});console.log('1');
结果是 1, 2, 3 ,4, 5, 6, 6.1, 7, 3.1
于是,结果如下:
process.nextTick(callback)是不断执行的。而setImmediate(callback)会停下来将内部实现完。
---------------------------------------------------------------------------------------------------------------------------------------------------
第二个知识点。
下面是几种经典的服务器模型
1.同步:同步式地处理每一条请求,一次只能处理一个,所以其余请求都处于等待状态(性能不太好)。
2.请求---进程:每次开一次一个进程,这样可以处理很多请求,但是可扩展性不强(系统资源有限)
3.请求---线程:尽管线程比进程要轻得多,但是每个线程要占用一定内存,多人请求的时候很容易扛不住,效果比第二点要好,但是美中不住。
第三种方案是Apache所采纳的模型。nodejs通过事件驱动的方式,无需为一次请求单独开启一个线程,省去了创建开销还有切换花费,这都是很昂贵的。这就是nodejs性能较好地原因之一。
知名服务器nginx,就是采用和nodejs一样的事件驱动,所以性能很好,有取代Apache的势头。但nginx只适合做服务器,而nodejs是个高性能的平台,通用性更大。
- nodejs之异步I/O
- Nodejs 异步 I/O
- nodejs-异步I/O
- NodeJS -- 异步I/O
- NodeJS异步I/O解析
- 深入浅出NodeJS——异步I/O
- nodejs 异步I/O和事件驱动
- NodeJS中的异步I/O、事件驱动
- nodejs 非异步I/O API
- nodejs异步I/O和事件循环
- 异步I/O之asyncore
- [读书笔记]深入浅出NodeJS——Node中的异步I/O
- 《深入浅出nodejs》异步i/o笔记(1)
- 《深入浅出nodejs》异步I/O笔记(2)
- 设备I/O之“异步设备I/O请求”
- 异步I/O之用户空间
- Windows系统编程之异步I/O
- nodejs学习--I/O
- 互联网思维:3个段子,9大分类,19条法则
- C语言外部变量extern
- MemCached client with Delphi 客户端
- linux 配置iso 文件为本地yum源
- Android Bitmap OutOfMemory如何解决
- nodejs之异步I/O
- linux下通过命令启动多个终端执行相应的命令和程序
- 静态缓冲区溢出问题(高手进)
- 命令行
- java枚举在android项目应用
- 浅析Java CompletionService
- 关于Visual Studio 2013 编译 multi-byte character set MFC程序出现 MSB8031 错误的解决办法
- NO.3 Android SDK 高效更新(一)
- UIViewController的生命周期及iOS程序执行顺序