Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js和事件循环_Javascript_Event Loop_Internals - Fatal编程技术网

Javascript Node.js和事件循环

Javascript Node.js和事件循环,javascript,event-loop,internals,Javascript,Event Loop,Internals,我对Javascript中的事件循环有一些了解,但有些概念在web上似乎找不到答案 因此,如果Node.js有一个执行代码的单堆栈(因为它是单线程的),并且还有一个事件循环负责将任务放入这个主堆栈中执行,那么 主要问题: 事件循环在哪里运行?它如何与主线程通信 当前假设: 事件循环是否持续检查要执行的任务?这不会给主线程增加很大的负载吗 如果它不在主线程上,它如何与主线程通信?IPC 主线程上是否也存在任务队列?(我知道这是一个数据结构,但它必须在上面有管理任务的东西,不是吗?) Node

我对Javascript中的事件循环有一些了解,但有些概念在web上似乎找不到答案

因此,如果Node.js有一个执行代码的单堆栈(因为它是单线程的),并且还有一个事件循环负责将任务放入这个主堆栈中执行,那么

主要问题:

  • 事件循环在哪里运行?它如何与主线程通信
当前假设:

  • 事件循环是否持续检查要执行的任务?这不会给主线程增加很大的负载吗
  • 如果它不在主线程上,它如何与主线程通信?IPC
  • 主线程上是否也存在任务队列?(我知道这是一个数据结构,但它必须在上面有管理任务的东西,不是吗?)

Nodejs内部构件不是单螺纹的。就像浏览器内部一样,它们也有不同的线程来管理不同的任务Node.js允许您编写代码,“JavaScript是单线程的”是一种极端的过分简化。在解释事情时,它可能弊大于利,因为它确实是错的。更准确的说法是,代码将在单个线程中运行,而不是整个语言都是单线程的。即使这样,您的代码也可以在多个线程上运行,所以这也过于简单,但至少不太容易引起误解。@VLAZ,没错。应该是JavaScript解释是单线程的。开发人员的代码在主线程中,事件循环需要以某种方式与主线程通信,所以我要问的是它是如何做到这一点的