Node.js,事件驱动模型
web前端-js教程
A、传统线程网络模型货运网源码,vscode存储库出问题,ubuntu没root,tomcat自带监控工具,jd爬虫工具,php 开源吗,永济seo关键字优化,政府网站源码 php,wordpress手机版主题模板下载lzw
在了解Node.js事件驱动模型之前,我们先了解一下传统的线程网络模型,请求进入web服务器(IIS、Apache)之后,会在线程池中分配一个线程来线性同步完成请求处理,直到请求处理完成并发出响应,结束之后线程池回收。疯传分享源码,vscode 文件配置,ubuntu vim 键,tomcat设置名子,sqlite 通配符用法,南通服务器租用,jq 翻书效果插件,饿了吗 前端框架,德国爬虫网站,php7慢,哪家公司seo优化好,便民信息网站源码,订单网页代码,类似a站的网站模板,第三方平台页面模板,学校题库管理系统 c 源码,微信小程序上传图片phplzw
这就会就会带来以下几个问题 :12款表白源码,vscode代码美化插件,ubuntu ppa 显卡,tomcat开启端口,sqlite3中编号更新,泡泡龙爬虫店蛇蛇,php安装bcmath,如皋专业seo费用价格,网站空间的管理站点,网页游戏捕鱼达人,mui登录模板demolzw
1.由于线程池中线程个数有限,对于频繁请求时,就会出现等待,严重的甚至会把服务器挂掉2.对于高并发的时候,为了防止出现脏数据就会使用锁来解决,一些I/O事务可能消耗很长得时间,这样就会出现一些线程等待,效率低下
B、事件驱动模型
1.在Node.js中有一个事件队列,每个任务都会放入事件队列中,都会留下处理结果的回调函数,事件循环线程(个人感觉有点类似ios中的RunLoop)处理事件队列中的任务,直到回调函数不再存在。
2. 在无阻塞的情况下,作为一个带有回调的函数被放入事件队列中,事件循环线程中被提取并执行。
3.当执行过程中遇到I/O阻塞(读取文件、查询数据库、请求套接字、访问远程服务等)时,事件循环线程不会停下等待结果,转而继续执行队列中的下一个任务,不会在事件循环线程中执行。在函数执行时,Node.js在事件队列中放置回调函数,它的顺序根据函数的完成快慢决定。
4.在1中也说了当遇到I/O阻塞,循环线程不会等待结果,转而执行队列中的下一个任务,那是该由谁来执行这个I/O操作呢?
Node.js使用事件回调来避免对阻塞I/O的等待,在后台实现线程池,当遇到I/O阻塞任务时,会从线程池中获取一个线程,将该函数及回调在那里执行,在被阻塞的线程上执行的回调函数仍然可以把事件添加到事件队列中。
以上就是关于Node.js事件驱动模型的全部内容,希望对大家的学习有所帮助。