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),逻辑复杂的程序