node.js非阻塞型IO及事件环机制到底是咋一回事到底有啥优点
【node.js非阻塞型IO及事件环机制到底是咋一回事到底有啥优点】 看图,Node.js 使用的 libuv 只在右侧的场景需要动用线程池,里面多为阻塞 I/O 或者耗 CPU 的任务。非阻塞的尤其是网络 I/O, 是直接在主线程里进行的。
■网友
本质上就是do( f , callback)等价于new thread(t)t =\u0026gt; {f();//此处是阻塞函数push to main event queue(callback)}
■网友
Apache是Web服务器,node只是后端服务器。应该是Apache和Nginx;node和php对比才有效。非阻塞io使用事件循环实现的。任何服务程序最终优化后都是用事件循环实现的。线程优先级完全不用自己操心,操作系统会做好的。php是阻塞io,他的处理线程只处理一个用户的请求。需要io的时候,处理线程完全停止运行用户代码,直接自己去调用内核io函数。结果就是被操作系统挂起等待io完成,操作系统自己去决定下一个运行哪个线程。(实际当然比这个复杂得多,而且也用了事件循环和多线程)nodejs是非阻塞io,处理线程要不断处理大量用户请求。处理线程要做的就是检查消息队列。如果有事件发生(io线程发来的、程序启动事件、等等),就调用回调。没有事件,就继续等。根据“别人比我好我就要虚心学习”的原则,同步和异步在io的上已经没有什么差异了。但由于核心思想不同,两个东西在编程和部署的时候差异巨大。php最大的毛病是每个请求都要重新初始化,而且系统不停切换线程消耗很大。而node最大的毛病是同一时刻只能处理一个请求,其他的只能排队不能实时伸缩,请求间有可能意外的互相影响,万一线程崩溃,所有队列里的请求全部出错。任何一个的缺点就是对方的优点。。。而且两者的缺点都可以通过各种方法避免。。。
推荐阅读
- “错换人生28年”事件续:三案均有果当事人及其父母共获赔逾76万元
- 危及铁路运输安全长三角13起事件责任方受到依法约谈
- AutoR智驾|2020年度三大豹变营销事件:它们成就2020汽车界教科书式营销
- 肖战|227事件是一个人的错?肖战粉丝甩锅给工作人员后,遭官方打脸
- 怎样看待斗鱼拖欠小主播三个月工资的事件
- 中消协|回应“燕窝变糖水”事件 中消协专家教你做精明消费者
- 长春通报“新学都幼儿园事件”处理进展:公安机关正在调查,涉事教师已被解聘
- 青年|辛巴道歉了!辛有志回应燕窝事件
- 苏建|解析苏建冰块事件
- 燕窝事件|燕窝事件存在夸大宣传 知名主播道歉 退赔近6200万
