首页 > 解决方案 > NodeJS中的多线程和异步有什么区别

问题描述

NodeJs 在最新更新中添加了多线程功能。

我想通过简单的例子来了解多线程和异步有什么区别?在哪些情况下我们应该使用多线程而不是异步?

标签: node.jsmultithreadingasynchronous

解决方案


首先要了解的是计算机的不同部分以不同的速度工作。磁盘、网络等...

因此,如果您注意到异步代码似乎只处理网络或文件的大量内容,我们称之为 io.

嗯不错。

现在让我们考虑一下,您的代码正在运行并且您需要读取一个文件。在 CPU 时间。cpu 说,这是“1000 年”。嘿,当数据可用时,你告诉我。我去做一些其他的事情。

然后磁盘回来了,就像嘿我得到了你想要的数据。cpu之类的?数据哦,我正在“等待”的东西。

您可以看到这如何更有效。

现在,如果您没有获取数据怎么办。如果你的 cpu 需要做不止一件事怎么办。

按照这个,早上你可能会一边倒果汁一边做三明治。两者都很难做到吗?

但是您可以在等待鸡蛋煮熟的同时轻松倒入果汁。

线程...线程是为了得到更多的人。我需要做更多的任务,比如缩小图像的大小,我等不及图像缩小了。我需要主动缩小图像,但我需要回应其他人,我需要缩小多个图像,我不能一次只做一个。

所以现在你明白了这个概念,让我来解释一下这该死的东西。

异步代码创建了一个只等待 io 的哑线程,例如磁盘或网络。它仍然是一个线程,但代码可以很好地为您处理它。它为您解决了一堆复杂的工作。您只需编写等待和异步。

线程通常你必须管理更多。这样想吧。

从磁盘读取,从网络读取......它们是相当明显的东西,您可以确保围绕它创建一个 API。但是 cpu 工作,一个 cpu 可以做无限的事情。线程通常涉及更多的手动工作。

最后一个线程只能做一件事。用一只手倒入你的橙汁和黄油三明治。很难吧?可能需要线程,额外的手。

现在煮鸡蛋,用一只手切一些西瓜。您可以看到如何等待某些事情完成并去做其他事情。

去..你现在是一个男人!


推荐阅读