We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
一般谈起node,伴随着的都是这样的描述:异步、非阻塞、回调和事件。基于这样的词汇,我们得出一个详尽的描述,node是基于事件驱动,采用异步非阻塞I/O机制的网络应用平台。
要理解这些特点,要知道一些重要的概念
Node是基于事件驱动的,所以他的执行模型,就是事件循环。每一个事件循环都会有一个或几个观察者(对,这个观察者,就是观察者模式的观察者!),而事件的执行就是由这些观察者控制是否执行加入队列的事件。(由事件的功能划分了若干观察者,每一种资源请求都划分为一个观察者,如磁盘读取、网络I/O等等)。从而实现异步I/O。
每当接收到一个请求的时候,node的javascript模块会调用底层的c++模块,对传入的回调事件进行封装成请求对象,然后放入I/O线程池等待,由观察者管控何时调用。然后Javascript线程继续执行后续的操作。
Node的底层是通过libuv来兼容不同平台事件循环,在windows下,基于IOCP实现,在*nix下基于libuv创建的多线程来实现。
操作系统对于I/O只有两种方式,阻塞和非阻塞,我们由一个读取文件事例来说明阻塞和非阻塞的区别,在调用阻塞I/O时,系统会等内核完成所有操作(磁盘寻址,读取数据,复制数据到内存)返回数据才结束调用,在调用非阻塞I/O时,系统内核会完成磁盘寻址,然后返回一个文件描述符,就直接结束调用,然后等程序想要获取数据时,再根据文件描述符来读取数据。
Node的非阻塞调用是使用内核的非阻塞I/O,调用后立即返回,然后等数据读取完毕后,进行事件通知,在执行数据相关操作。
总结一下,Node的事件驱动通过主循环加事件触发的方式来运行程序。由于网络I/O请求也不断的被Node服务器做异步事件处理,从而成就了Node的高并发服务器
The text was updated successfully, but these errors were encountered:
No branches or pull requests
node的异步非阻塞特点解读
一般谈起node,伴随着的都是这样的描述:异步、非阻塞、回调和事件。基于这样的词汇,我们得出一个详尽的描述,node是基于事件驱动,采用异步非阻塞I/O机制的网络应用平台。
要理解这些特点,要知道一些重要的概念
异步I/O
Node是基于事件驱动的,所以他的执行模型,就是事件循环。每一个事件循环都会有一个或几个观察者(对,这个观察者,就是观察者模式的观察者!),而事件的执行就是由这些观察者控制是否执行加入队列的事件。(由事件的功能划分了若干观察者,每一种资源请求都划分为一个观察者,如磁盘读取、网络I/O等等)。从而实现异步I/O。
每当接收到一个请求的时候,node的javascript模块会调用底层的c++模块,对传入的回调事件进行封装成请求对象,然后放入I/O线程池等待,由观察者管控何时调用。然后Javascript线程继续执行后续的操作。
Node的底层是通过libuv来兼容不同平台事件循环,在windows下,基于IOCP实现,在*nix下基于libuv创建的多线程来实现。
非阻塞
操作系统对于I/O只有两种方式,阻塞和非阻塞,我们由一个读取文件事例来说明阻塞和非阻塞的区别,在调用阻塞I/O时,系统会等内核完成所有操作(磁盘寻址,读取数据,复制数据到内存)返回数据才结束调用,在调用非阻塞I/O时,系统内核会完成磁盘寻址,然后返回一个文件描述符,就直接结束调用,然后等程序想要获取数据时,再根据文件描述符来读取数据。
Node的非阻塞调用是使用内核的非阻塞I/O,调用后立即返回,然后等数据读取完毕后,进行事件通知,在执行数据相关操作。
总结一下,Node的事件驱动通过主循环加事件触发的方式来运行程序。由于网络I/O请求也不断的被Node服务器做异步事件处理,从而成就了Node的高并发服务器
The text was updated successfully, but these errors were encountered: