如果只有1个cpu内核,CPU时间分片是否可以在具有或不具有工作线程的Node.js上工作?

林俊杰

从Node.js 10.5开始,他们引入了新的工作线程,这使Node.js成为多线程环境。

以前,Node.js上只有一个线程,由于事件驱动的特性(如果我理解正确的话),不会进行cpu时间切片。

那么,现在在Node上有一个物理cpu核心的多个线程,它们如何共享cpu?OS调度程序为每个线程运行各种时间安排的时间是什么?

玛格丽特·布鲁姆

辅助线程的公告为

Worker类代表一个独立的JavaScript执行线程

因此,就像启动另一个NodeJS实例一样,但是在相同的过程中并且几乎没有通信通道。

NodeJS中的工作线程模仿了现代浏览器中的Worker API(这不是巧合,NodeJS本质上是没有UI并带有一些额外的JS API的浏览器),并且在这种情况下,工作线程实际上是操作系统调度的本机线程。

上面引用的描述似乎也暗示在NodeJS中,工作线程也是通过本机线程而不是由NodeJS管理的调度实现的。
后者将是无用的,因为这正是JS事件循环与异步方法结合使用的方式。
因此,基本上,工作线程只是在同一进程中由另一个本机线程运行的NodeJS的另一个“实例”(上下文)
作为本机线程,它由操作系统管理和计划。就像您可以在单个CPU中运行多个程序一样,您也可以使用线程来执行此操作(有趣的事实:在许多操作系统中,线程是唯一可调度的实体。程序只是一组具有共同地址空间和其他属性的线程)。

由于NodeJS是开源的,因此很容易确认这一点,请参阅Worker::StartThreadWorker::Run功能。

新线程将像主要线程一样执行JS代码,但是它与环境(特别是进程本身)交互的方式受到限制。
这与JS多线程处理方法是一致的,在JS方法中,“多于两个”或“更多消息循环”比真正的多线程(线程在体系结构级别具有相互影响的含义可以自由地相互交互)更多。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法使Node JS在端口3000上工作

来自分类Dev

如果客户端只有一个核心 CPU,Web Worker 是否可以正常工作?

来自分类Dev

无法让PUT在Node.js / Express上工作

来自分类Dev

Node.js编辑器在Eclipse上工作

来自分类Dev

无法使React组件在next.js网站上工作

来自分类Dev

如何使Pdf.js在网页上工作?

来自分类Dev

如何使Chessboard.js在本地WordPress上工作?

来自分类Dev

JS 编码不能在一页以上工作

来自分类Dev

限制某些 JS 在特定网站上工作

来自分类Dev

Js 在我的网站上没有按预期工作,即使它在 codepen 上工作

来自分类Dev

添加类并删除仅在页面中的一个 div 上工作的类 JS。不为具有相同规格的其他人工作

来自分类Dev

使onclick在iPhone上工作

来自分类Dev

让Crontab在Nitrous上工作

来自分类Dev

让Cron在Docker上工作

来自分类Dev

如何 !!在bash上工作?

来自分类Dev

在JavaFX SceneGraph上工作

来自分类Dev

使“ at”在macOS上工作

来自分类Dev

让Jack在Ubuntu上工作

来自分类Dev

jQuery滑块:只有最后一个滑块在具有多个滑块的页面上工作

来自分类Dev

是否将Node.js视为具有工作线程的多线程?

来自分类Dev

获取API在POSTMAN和Express服务器上工作,但在React js上不工作

来自分类Dev

尽管React.js Material-UI项目在本地工作,但无法在Codepen上工作

来自分类Dev

删除工作表后数组变量不具有值

来自分类常见问题

具有自定义层的PyTorch网络在CPU上工作正常,但移至GPU时会得到cudaErrorIllegalAddress

来自分类Dev

具有自定义层的PyTorch网络在CPU上工作正常,但移至GPU时会得到cudaErrorIllegalAddress

来自分类Dev

Node js在第二个或第三个调用上工作

来自分类Dev

如何分配进程以在部分CPU上工作?

来自分类Dev

如何分配进程以在部分CPU上工作?

来自分类Dev

无法使Node.js在Amazon EC2实例上工作

Related 相关文章

  1. 1

    无法使Node JS在端口3000上工作

  2. 2

    如果客户端只有一个核心 CPU,Web Worker 是否可以正常工作?

  3. 3

    无法让PUT在Node.js / Express上工作

  4. 4

    Node.js编辑器在Eclipse上工作

  5. 5

    无法使React组件在next.js网站上工作

  6. 6

    如何使Pdf.js在网页上工作?

  7. 7

    如何使Chessboard.js在本地WordPress上工作?

  8. 8

    JS 编码不能在一页以上工作

  9. 9

    限制某些 JS 在特定网站上工作

  10. 10

    Js 在我的网站上没有按预期工作,即使它在 codepen 上工作

  11. 11

    添加类并删除仅在页面中的一个 div 上工作的类 JS。不为具有相同规格的其他人工作

  12. 12

    使onclick在iPhone上工作

  13. 13

    让Crontab在Nitrous上工作

  14. 14

    让Cron在Docker上工作

  15. 15

    如何 !!在bash上工作?

  16. 16

    在JavaFX SceneGraph上工作

  17. 17

    使“ at”在macOS上工作

  18. 18

    让Jack在Ubuntu上工作

  19. 19

    jQuery滑块:只有最后一个滑块在具有多个滑块的页面上工作

  20. 20

    是否将Node.js视为具有工作线程的多线程?

  21. 21

    获取API在POSTMAN和Express服务器上工作,但在React js上不工作

  22. 22

    尽管React.js Material-UI项目在本地工作,但无法在Codepen上工作

  23. 23

    删除工作表后数组变量不具有值

  24. 24

    具有自定义层的PyTorch网络在CPU上工作正常,但移至GPU时会得到cudaErrorIllegalAddress

  25. 25

    具有自定义层的PyTorch网络在CPU上工作正常,但移至GPU时会得到cudaErrorIllegalAddress

  26. 26

    Node js在第二个或第三个调用上工作

  27. 27

    如何分配进程以在部分CPU上工作?

  28. 28

    如何分配进程以在部分CPU上工作?

  29. 29

    无法使Node.js在Amazon EC2实例上工作

热门标签

归档