为了账号安全,请及时绑定邮箱和手机立即绑定

node.js中http.ServerResponse对象中的write方法为什么是同步的?

node.js中http.ServerResponse对象中的write方法为什么是同步的?

泛舟湖上清波郎朗 2018-11-08 22:18:00
最后两行是1和5!书上写http.ServerResponse对象实现了一个 stream.Writable(可写流)。但是可写流一般是异步的(如fs写入流,zlib流,子进程的stdin)啊,这样对事件驱动的服务模型正好。现在我测试出的是res.write同步也就就是说要执行完这个回掉才能执行事件队列里的下一个回掉?function(req,res)是ruquest事件的回掉,也就是说如果应对好几万个并发请求就要执行几万个function(req,res),哪怕function(req,res)里没有cpu密集应用积少成多这不是用户访问就会有延迟?但是node非常擅长处理密集io啊?是我想错了么?这个show函数是我故意弄得,因为js是单线程不擅长处理cpu密集业务,所以res.write(show()+''+c)时间比较长这样比较好看res.write是不是异步,如果是res.write是异步那么就会先执行c=a+b;那c定是5;
查看完整描述

1 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

write只是将数据写到内部的队列就返回了,虽然这会占用CPU时间,但是node必须保证这个写入是有顺序的,只有这样才能保证发送出去的数据是有顺序的,否则逻辑上就乱了。
高并发 write 操作,确实会损耗CPU,这个时候只能通过增加cluster节点数来解决这个问题了。

查看完整回答
反对 回复 2018-12-17
  • 1 回答
  • 0 关注
  • 646 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号