Wang Lichao home

NodeJs学习笔记之IO

15 Mar 2016 - 北京

nodejs 特点:非阻塞I\/O:

阻塞I\/O:线程,在执行中遇到磁盘读写操作,比如读取一个数据,文件,都叫I\/O。

那么I\/O需要花费时间,所以这时操作系统就会剥夺这个线程的cpu的控制权,所以这个线程就被

阻塞了,后面的语句无法执行。当I\/O结束后,操作系统会把这个线程的阻塞状态解除,继续之后的语句,这种模式叫阻塞I\/O。

非阻塞I\/O:就是不阻塞读取文件,但有一个I\/O读取的时候,此时只是将这个命令发给操作

系统,而线程将继续执行后面的语句,不会被阻塞。当操作系统完成I\/O操作的时候,将会

以事件的方式通知这个线程。程序将执行回调函数里面的语句。

阻塞模式下,一个线程只能处理一个任务,所以要提高吞吐率,就必须通过多线程。

但是,在非阻塞模式下,一个线程,也可以达到并行的目的。

所以nodejs采用的是单线程,非阻塞I\/O模式。

好处:

存的服务器,只能供400人同时访问,所以要提高同时访问人数,只能加内存。但是nodejs不用,因为一个内存可以给很多用户同时访问。

适合,数据密集型(投票,考试,社区问答), 实时交互应用程序(聊天,股票),大量的读取数据文件,和html5的web socket搭配的比较好

不适合,计算量大(crp),逻辑复杂的程序

Fork me on GitHub