- 用户体验
- 资源分配
1. 单线程同步编程会因I/O导致硬件资源得不到更有的使用
2. 多线程也会因为编程中的死锁,状态同步等问题让人头痛
- nodejs给出的解决方案
1.利用单线程,原理多线程死锁,状态同步等问题
2.利用异步I/O让单线程原理阻塞,更好的使用CPU
3.提供了类似于前端浏览器中的web workers的子进程,process_child
1.这种重复调用判断操作是否完成的技术交轮询
2.事件轮询的几种方式
a.read ==> 最原始,性能最低的一种
b.select模式,是在read基础上的一种改进
c.poll 相比select有所改进,采用的链表的方式避免数组长度的限制,其次它能避免不要的检查。但是当文件描述符较多时,他的性能是十分低下的
d.epoll效率最高的I/O事件通知机制,在进入轮询的时候没有检查到I/O就会进行休眠,直到事件发生将他唤醒。
e.kqueue 改方案与epoll相似,在freeBSD系统下存在
3.观察者 判断是否有事件需要处理
4.请求对象
5.执行回调
事件循环,请求对象,回调函数,I/O线程池构成了Node异步模型的基本要素
原文:https://www.cnblogs.com/Nelsen8/p/12751615.html