Tag: 单线程

NodeJS:理解非阻塞/事件队列/单线程

我是新来的节点,并尝试了解节点的非阻塞性质。 在下面的图片中,我创build了一个高层次的请求图。 据我所知,一个单一的应用程序的单个用户的所有进程运行在一个单一的线程。 我想要了解的是事件循环的逻辑如何适合这个图。 事件循环是否与指令排队的处理器pipe道相同? 想象一下,我们将一个应用程序页面加载到RAM中,从而创build一个可供程序读取的stream: readstream.on('data', function(data) {}); 有关创build读取stream和等待数据发生的指令:该指令是否在处理器中“挂起”在寄存器中(等待I / O完成),而在multithreading环境中,处理器不会从中获取新的指令RAM,直到以前的I / O请求的结果已经返回到RAM? 或者是我看到这完全/部分错误的方式? 只是一个补充(相关的,也许是愚蠢的)问题:在服务器上的不同线程上运行不同的用户,而不是单一线程的好处只有一个用户? 我是新来的这种types的细节,所以请问,如果这个问题不完全对你有意义。 但理解这一点对我来说似乎是必不可less的。

Node.js单线程VS Tranditonal webserver线程池

我是node.js的新手 目前我正在阅读由Basarat Ali Syed撰写的 “ Beignning Node.js ”。 以下是摘录自传统Web服务器线程池的缺点: 大多数Web服务器使用线程池这种方法几年前,许多继续使用今天。 但是,这种方法不是没有缺点。 线程之间的内存浪费了。 另外,操作系统需要在线程之间进行上下文切换(即使它们处于空闲状态),这会导致浪费CPU资源。 我不太明白为什么在线程池内的线程之间有上下文切换。 据我所知,一个线程将在任务期间持续。 一旦任务完成,线程将自由地接收下一个任务。 所以我的Q1 :为什么需要上下文切换? 线程之间的上下文切换何时发生? 我的Q2 :为什么node.js不使用多个线程来处理事件队列中的事件? 这不是更有效率,并减less事件的排队时间?

node.js服务器如何排队并发请求

假设我们有3个请求(A,B,C)同时触发我们的node.js服务器。 什么是node.js标准来确定首先应该执行哪个请求? 所有请求还有一件事是阻止操作。

为什么我的活动监视器使用multithreading显示Node.js?

我在OSX中打开了我的活动监视器,看看Node是如何相处的,令我惊讶的是它使用了8个线程。 怎么能在!!?

什么事件指定在tick.js中打勾时结束?

我已经读过,tick是一个执行单元,其中nodejs事件循环决定在其队列中运行所有内容,但除了明确说出process.nextTick()什么事件导致node.js事件循环开始处理新的tick ? 它在I / O上等待吗? 怎么样的CPU约束计算? 还是每当我们进入一个新的function?

Nodejs的callback机制 – 哪个线程处理callback?

我是nodeJS的新手,想知道Node的单实例模型。 在一个简单的nodeJs应用程序中,当某些阻塞操作与callbackasynchronous处理时,运行nodeJs的主线程是否也处理callback? 如果请求是从数据库中获取一些数据,并且有100个并发用户,并且每个db操作需要几秒钟,当最后触发(对于每个连接)callback时,接受这些请求的主线程用于执行callback以及? 如果是这样,nodeJs如何扩展,它如何快速响应?

有多个并发请求的Node.js服务器,它是如何工作的?

我知道node.js是一个单线程,asynchronous,非阻塞I / O。 我读了很多关于这个。 例如,PHP每个请求使用一个线程,但节点只使用一个线程,就像这样。 假设有三个请求a,b,c同时到达node.js服务器。 其中三个请求需要大量的阻塞操作,例如他们都想要读取同一个大文件。 那么这些请求是如何排队的,按照什么样的顺序进行阻塞操作,以及以什么顺序发送响应呢? 当然使用多less个线程? 请告诉我从请求到响应三个请求的序列。