博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nj03---阻塞和线程
阅读量:6429 次
发布时间:2019-06-23

本文共 1398 字,大约阅读时间需要 4 分钟。

Node.js最大的特性就是"异步式I/O"与事件紧密结合的编程模式。这种模式与传统的同步式IO线性的编程思路有很大的不同,因为控制流很大程度上要靠"事件"和"回调函数"来组织,一个逻辑要拆分为若干个单元格。(传统是来一个请求就开一个线程,nodejs来一个请求就是一个事件加入事件中,然后处理请求,nj中一个大事件里面会包含若干个小事件) 内容:阻塞和线程        1.同步式I/O或阻塞式I/O(线程会停止控制cpu)                线程在执行中如果遇到磁盘读写或网络通信,通常要耗费较长时间。这时操作系统会剥夺这个线程的CPU控制权,使其暂停执行,同时将资源让给其他的工作线程,这种线程调度方式成为阻塞,当I/O操作完毕时,操作系统将这个线程的阻塞状态解除,恢复其对CPU的控制权、令其继续执行。        2.异步式I/O或非阻塞式I/O                针对所有I/O操作不采用阻塞策略,当线程遇到I/O操作时,不会以阻塞的方式等待I/O操作的完成或数据的返回,而只是讲IO请求发送给操作系统,继续执行下一条语句,当操作系统完成IO操作时,以事件的形式通知执行IO操作的线程,线程会在特定时候处理这个事件,为了 处理异步IO,线程必须有事件循环,不断的检查有没有未处理的事件,依次予以处理。        3.非阻塞与阻塞模式区别                非阻塞模式下,一个线程永远在执行计算操作,这个线程所使用的CPU核心利用率永远是100%,IO以事件的方式通知。                阻塞模式下,多线程往往能提高系统吞吐量,因为一个线程阻塞还有其他线程在工作,多线程可以让CPU资源不被阻塞中的线程浪费。        调度:当前一个工作,在5分钟之后执行        4.同步式IO与异步式IO区别             同步式IO(阻塞式)                                                          异步式IO(非阻塞)                利用多线程提供吞吐量                                          单线程即可实现高吞吐量                通过事件片分割和线程调度利用多核CPU            通过功能划分利用多核                需要由操作系统调度多线程使用多核CPU            可以将单线程绑定到单核CPU                难以充分利用CPU资源                                            可以充分利用CPU资源                内存轨迹大,数据局部性弱                                    内存轨迹小,数据局部性强                    符合线性的编程思维                                                不符合传统编程思维

 

本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/7012490.html,如需转载请自行联系原作者

你可能感兴趣的文章
用什么软件可以修改PDF文件,软件的操作方法
查看>>
Windows下安装Django-使用Pycharm创建项目
查看>>
如何精简企业主数据“裹脚布”
查看>>
Pointer on C
查看>>
电子名片价值篇,让您了解不一样的电子名片
查看>>
& 号和管道符号(|)在不同场景下的使用方法
查看>>
curl 浏览器模拟请求实战
查看>>
多个VLAN中的vrrp备份组配置举例
查看>>
运维自动化之使用PHP+MYSQL+SHELL打造私有监控系统(六)
查看>>
interlib在tomcat7.0的安装
查看>>
水晶报表在大型WEB内部管理系统里的滑铁卢
查看>>
我的友情链接
查看>>
Git学习
查看>>
trove 基于 centos7 制作 mysql5.6 镜像
查看>>
结合i节点和数据块分析linux中软链接和硬链接的区别
查看>>
Heartbeat crm的配置
查看>>
Stream
查看>>
我的友情链接
查看>>
Windows Server 2012_Install_Guide
查看>>
ISA Server搭建站点对站点×××
查看>>