我已经阅读了很多关于NodeJs运行方式的文章,但我仍然无法确定Nodejs内部线程如何处理IO操作。
在这个回答中https://dev59.com/_HnZa4cB1Zd3GeqPus_H#20346545 ,他说NodeJs的线程池中有4个内部线程用于处理I/O操作。那么如果有1000个请求同时到来,每个请求都想要执行从数据库检索大量数据的I/O操作。NodeJs将把这些请求分别交给这4个工作线程,而不会阻塞主线程。因此,NodeJs能够同时处理的最大I/O操作数量为4个操作。我理解得对吗?
如果我是正确的,那么其余的请求将在哪里处理呢?主单线程是非阻塞的,并继续将请求驱动到相应的操作者,那么当所有工作线程都满了时,这些请求会去哪里呢?它们是否拥有一个内部任务队列来存储这些请求?
在下面的图片中,所有的内部工作线程都忙于处理任务,假设它们都需要从数据库中检索大量数据,而主单线程则继续将新请求驱动到这些工作线程,那么这些请求将去哪里呢?它们是否有一个内部任务队列来存储这些请求?