Introduction aux E/S asynchrones de nœud
Cet article présente principalement l'introduction des E/S asynchrones Node, qui ont une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer
E/S asynchrones
. 1. Pourquoi utiliser les E/S asynchrones
Expérience utilisateur
javascript est exécuté sur un seul thread, qui est le même thread que le thread de l'interface utilisateur. Si la synchronisation est utilisée, l'interface utilisateur sera exécutée. lorsque javascript est en cours d'exécution, le rendu doit s'arrêter et attendre, ce qui entraîne une très mauvaise expérience utilisateur.
Si la page Web doit demander certaines ressources et les obtenir de manière synchrone, alors nous devons attendre que js obtienne complètement les ressources du serveur avant de continuer à s'exécuter. Pendant cette période, l'interface utilisateur attend, ce qui provoquera le. interaction avec l'utilisateur à extrêmement mauvaise, affectant l'expérience utilisateur.
// 现在请求两个资源 //耗时为M毫秒 getData('from_db'); //耗时为N毫秒 getData('from_remote_api');
Si c'est synchrone, ça prendra du temps(M + N)
Si c'est asynchrone, ça prendra du tempsMax(M, N)
;
Avec la complexité de l'application , le scénario se transformera en M+N+...和Max(M,N,...)
, alors les avantages et les inconvénients de la synchronisation et de l'asynchronisme seront plus importants. D'un autre côté, à mesure que les sites Web et les applications se développent, les données sont souvent distribuées sur plusieurs serveurs, et la distribution signifie que les valeurs de M et N augmenteront de manière linéaire, ce qui amplifiera également la différence de performances entre asynchrone et synchrone. Bref, les IO coûtent cher, et les IO distribuées sont encore plus chères !
Allocation de ressources
E/S synchrone monothread
会因阻塞IO使得硬件资源无法得到更优的利用。
Programmation multithread
优点: 可以利用多核CPU有效提升CPU的利用率 缺点: 编程中的死锁、状态同步使得程序员很是头疼。
E/S asynchrones du nœud
node采用的异步IO,利用单线程,远离了多线程死锁、状态同步,利用异步让单线程远离了阻塞,使得CPU得到更好的利用。 为了弥补单线程无法利用多核CPU的问题,Node提供了子进程 `childProcess` ,将一些运算多的任务放入子进程进行高效的运算。
E/S bloquantes et E/S non bloquantes
E/S bloquantes
阻塞的IO操作就是发起IO操作后,线程阻塞等待IO完成,这期间cpu得不到有效利用。
E/S non bloquantes
非阻塞IO操作其实就是发起IO操作后,通过事件轮巡,或者事件通知机制,不断查询IO操作是否完成,或者是主线程进入休眠等待事件通知IO结束,然后继续向下执行代码,实际上非阻塞IO期间,cpu要不用来查询要不用来休眠,也没有得到有效利用。依旧是同步IO。
3. Les E/S asynchrones du nœud
nécessitent un seul lien 事件循环
观察者
请求对象
pour terminer l’intégralité des E/S asynchrones.
En fait, l'IO asynchrone du nœud utilise la technologie du pool de threads. Lorsque l'IO asynchrone est lancée, l'opération io est lancée dans le pool de threads pour être exécutée, puis le thread principal continue d'effectuer d'autres opérations. l'exécution est notifiée via la communication inter-thread. Thread principal, le thread principal exécute le rappel.
Le thread IO est contrôlé par le pool de threads géré par Libuv
(sous Linux
est implémenté par libeio
; sous window
est implémenté par IOCP
) et est essentiellement multithread. Autrement dit, 线程池
et 阻塞IO
sont utilisés pour simuler 异步IO
.
Principe des IO asynchrones
Lorsque IO est rencontré, placez-le dans un thread IO dans le pool de threads, laissez la tâche est exécuté sur le thread IO, qui est exécuté en mode IO bloquant, puis continue l'exécution sur le thread principal lorsqu'une autre tâche IO est rencontrée, elle est placée dans le pool de threads, puis exécutée sur un autre thread IO (également). en mode IO bloquant), le thread principal continue de s'exécuter.
Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !
Recommandations associées :
Analyse du mécanisme du module Node
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Cet article vous donnera une compréhension approfondie de la mémoire et du garbage collector (GC) du moteur NodeJS V8. J'espère qu'il vous sera utile !

Le service Node construit sur une base non bloquante et piloté par les événements présente l'avantage d'une faible consommation de mémoire et est très adapté à la gestion de requêtes réseau massives. Dans le contexte de demandes massives, les questions liées au « contrôle de la mémoire » doivent être prises en compte. 1. Le mécanisme de récupération de place du V8 et les limitations de mémoire Js sont contrôlés par la machine de récupération de place

Le choix d'une image Docker pour Node peut sembler trivial, mais la taille et les vulnérabilités potentielles de l'image peuvent avoir un impact significatif sur votre processus CI/CD et votre sécurité. Alors, comment choisir la meilleure image Docker Node.js ?

Le module de fichiers est une encapsulation des opérations de fichiers sous-jacentes, telles que l'ajout de lecture/écriture/ouverture/fermeture/suppression de fichiers, etc. La plus grande caractéristique du module de fichiers est que toutes les méthodes fournissent deux versions de **synchrone** et ** asynchrone**, with Les méthodes avec le suffixe sync sont toutes des méthodes de synchronisation, et celles qui n'en ont pas sont toutes des méthodes hétérogènes.

Node 19 est officiellement publié. Cet article vous donnera une explication détaillée des 6 fonctionnalités majeures de Node.js 19. J'espère qu'il vous sera utile !

Comment Node.js fait-il le GC (garbage collection) ? L’article suivant vous guidera à travers cela.

La boucle d'événements est un élément fondamental de Node.js et permet une programmation asynchrone en garantissant que le thread principal n'est pas bloqué. Comprendre la boucle d'événements est crucial pour créer des applications efficaces. L'article suivant vous donnera une compréhension approfondie de la boucle d'événements dans Node. J'espère qu'il vous sera utile !

La raison pour laquelle le nœud ne peut pas utiliser la commande npm est que les variables d'environnement ne sont pas configurées correctement. La solution est la suivante : 1. Ouvrez "Propriétés système" ; 2. Recherchez "Variables d'environnement" -> "Variables système", puis modifiez l'environnement. variables ; 3. Recherchez l'emplacement du dossier nodejs ; 4. Cliquez sur "OK".
