NodeJS中的多线程和异步有什么区别

inf*_*dev 2 multithreading asynchronous node.js

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

我想通过简单的示例了解多线程和异步之间的区别是什么?在哪种情况下,我们应该使用多线程而不是异步?

Lpc*_*ark 5

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

因此,如果您发现异步代码似乎仅处理网络或文件中的大量内容,那么我们称其为io。

嗯不错。

现在让我们考虑一下,您的代码正在运行,您需要读取一个文件。在cpu时间。因此,这是“数千年”,CPU表示。嘿,当数据可用时,您让我知道。依玛去做其他事情。

然后磁盘又回来了,就像嘿,我得到了您想要的数据。CPU喜欢吗?数据哦,那件事我正在“等待”。

您将看到如何提高效率。

现在,如果您没有获取数据该怎么办。如果您的CPU需要做的不只一件事情该怎么办。

遵循这个步骤,早晨您可能会在倒果汁的同时做一个三明治。很难同时做对吗?

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

线程...线程将获得更多帮助。我需要执行更多任务,例如缩小图像大小,等不及要缩小图像。我需要主动缩小图像,但是我需要回应其他人,我需要缩小多幅图像,我一次只能做一个。

因此,现在您有了概念,让我实际解释该死的事情。

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

通常,您必须管理更多的线程。这样想吧。

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

最后,线程只能做一件事。用一只手倒入橙汁,然后在三明治上涂黄油。很难吧?可能需要螺纹,需要额外的手。

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

去..你现在是个男人!