当前位置: 首页 > 面试题库 >

掌握Node JS替代多线程

汝跃
2023-03-14
问题内容

如果我正确理解Node JS不会阻塞…,那么它就不必等待数据库或其他进程的响应,而是继续进行其他操作并稍后再检查。

它也是单线程的。

因此,这是否意味着给定的Node JS进程可以完全有效地利用单个CPU内核,但不会使用计算机上的任何其他内核,因为它永远不会一次使用多个内核。

当然,这意味着其他进程仍可以将其他CPU用于其他事物,例如SQL数据库或其他故意分离的CPU重子例程,只要它们是独立的进程即可。

同样,如果Node JS进程具有无限循环或长时间运行的功能,则在停止无限循环或长时间运行的功能(或终止整个进程)之前,该进程将不再有用。

这一切对吗?我的理解正确吗?


问题答案:

是的,非常正确。node.js服务器具有一个内部线程池,因此它可以执行阻止操作,并在事情完成时通过回调或事件通知主线程。

因此,我想它会在线程池中有限地使用另一个内核,例如,如果您执行非阻塞文件系统读取,则很可能是通过告诉线程池中的线程执行读取并设置回调来实现的完成后,这意味着在主node.js程序执行其他操作时,读取可能在其他线程/内核上进行。

但是从node.js的角度来看,它完全是单线程的,不会直接使用多个内核。



 类似资料:
  • 本文向大家介绍轻松掌握JavaScript代理模式,包括了轻松掌握JavaScript代理模式的使用技巧和注意事项,需要的朋友参考一下 在面向对象设计中,有一个单一职责原则,指就一个类(对象、函数)而言,应该仅有一个引起它变化的原因。如果一个对象承担了过多的职责,就意味着它将变得巨大,引起它变化的原因就多,它把这些职责耦合到了一起,这种耦合会导致程序难于维护和重构。  这时候,我们可以把该对象(本

  • Cocos Creator 为开发者提供了非常丰富的界面元素,帮助开发者快速的开发面板界面。 于此同时, 我们还为开发者提供了控件预览面板,方便开发者在使用控件时,查看控件的各种属性和这些属性对应的效果。 要打开控件预览窗口,仅需要在主菜单中选择 开发者 / UI Kit Preview。 目前界面元素包括: 控件 ui-button ui-checkbox ui-color ui-input u

  • 本文向大家介绍轻松掌握Java迭代器模式,包括了轻松掌握Java迭代器模式的使用技巧和注意事项,需要的朋友参考一下 定义:用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。 特点:     1、它支持以不同的方式遍历一个聚合对象。     2、迭代器简化了聚合类。     3、在同一个聚合上可以有多个遍历。     4、在迭代器模式中,增加新的聚合类和迭代器类都很方便,无须修改原有代码。

  • 本文向大家介绍Jquery技巧(必须掌握),包括了Jquery技巧(必须掌握)的使用技巧和注意事项,需要的朋友参考一下  检查 jQuery 是否加载 在使用 jQuery 进行任何操作之前,你需要先确认它已经加载: 返回顶部按钮 利用 jQuery 中的 animate 和 scrollTop 方法,你无需插件就可以创建简单的 scroll up 效果: 调整 scrollTop 的值即可改变滚

  • 第一章对find命令作了一些简单的介绍,除了选择器以外,find还有很多其他的特性。之前有提到过find返回的结果是一个游标。现在就将对这点做深入的讨论。 域的选择 在开始游标的话题之前,您需要知道find还有第二个可选参数。该参数是一个列表,用户在这个表中指明要求find读取的域。例如,可以用下面的命令获取所有独角兽的名字: db.unicorns.find(null, {name: 1});

  • 本文向大家介绍掌握在线教育的4种计算机技能,包括了掌握在线教育的4种计算机技能的使用技巧和注意事项,需要的朋友参考一下 如今,由于在线学校为人们提供的灵活性和众多选择,在线继续教育变得越来越普遍。学习课程材料并在测试和作业中获得良好的评分只是在线课程成功的一部分。您还应该具备一些计算机程序和Internet技能的工作知识,以便您的在线教育尽可能地无缝进行。这样,您可以专注于学习而不是计算机的挫败感