gpt4 book ai didi

node.js - NodeJS中的多线程和异步有什么区别

转载 作者:搜寻专家 更新时间:2023-11-01 00:19:53 25 4
gpt4 key购买 nike

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

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

最佳答案

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

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

好的,很酷。

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

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

您可以看到如何提高效率。

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

按照这个,早上你可以边倒果汁边做三明治。很难同时做到对吗?

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

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

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

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

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

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

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

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

去吧..你现在是个男人了!!

关于node.js - NodeJS中的多线程和异步有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50986210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com