相关疑难解决方法(0)

对于node.js上的并发任务哪个更好?纤维?网络工作人员?还是线程?

我在前一段时间偶然发现了node.js并且非常喜欢它.但很快我发现它缺乏执行CPU密集型任务的能力.所以,我开始使用谷歌搜索并得到这些答案来解决问题:纤维,Web工作者和线程(thread-a-gogo).现在使用哪一个是一个混乱,其中一个肯定需要使用 - 毕竟有一个擅长IO的服务器的目的是什么?建议需要!

更新:

我正在想办法离开; 只是需要建议.现在,我想到的是:让我们有一些线程(使用thread_a_gogo或webworkers).现在,当我们需要更多时,我们可以创造更多.但是在创建过程中会有一些限制.(系统没有暗示,但可能是因为开销).现在,当我们超出限制时,我们可以派生一个新节点,并开始在其上创建线程.这样,它可以持续到我们达到某个极限(毕竟,进程也有很大的开销).达到此限制后,我们将开始排队任务.每当一个线程空闲时,它将被分配一个新任务.这样,它可以顺利进行.

所以,这就是我的想法.这个想法好吗?我对所有这些过程和线程都有点新意,所以没有任何专业知识.请分享您的意见.

谢谢.:)

concurrency multithreading web-worker fibers node.js

109
推荐指数
3
解决办法
4万
查看次数

Nodejs的内部线程池如何工作?

我已经阅读了很多关于NodeJ如何工作的文章.但我仍然无法弄清楚Nodej的内部线程是如何进行IO操作的.

在这个答案/sf/answers/1424258181/中,他说NodeJ的线程池中有4个内部线程来处理I/O操作.那么,如果我同时有1000个请求,每个请求都想进行I/O操作,例如从数据库中检索大量数据.NodeJs将分别​​将这些请求传递给这4个工作线程,而不会阻塞主线程.因此,NodeJ可以同时处理的最大I/O操作数是4个操作.我错了吗?.

如果我是对的,剩下的请求将在哪里处理?主要的单线程是非阻塞的并且继续将请求驱动到相应的操作员,那么这些请求在所有工作线程充满任务的情况下会在哪里进行?.

在下图中,所有内部工作线程都充满了任务,假设它们都需要从数据库中检索大量数据,并且主要单线程继续向这些工作者发送新请求,这些请求将在何处进行?是否有内部任务queuse来存储这些请求?

在此输入图像描述

javascript multithreading event-loop node.js

11
推荐指数
1
解决办法
6070
查看次数