Maison > interface Web > Questions et réponses frontales > Le javascript est-il monothread ?

Le javascript est-il monothread ?

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2022-03-10 10:19:31
original
3120 Les gens l'ont consulté

JavaScript est monothread. Même si JavaScript possède plusieurs cœurs, il ne peut exécuter des tâches que sur un seul thread appelé thread principal ; en tant que langage de script de navigateur, l'objectif principal de JavaScript est d'interagir avec les utilisateurs et de faire fonctionner le DOM. S'il n'est pas monothread, cela entraînera beaucoup de problèmes de synchronisation complexes.

Le javascript est-il monothread ?

L'environnement d'exploitation de ce tutoriel : système Windows 10, JavaScript version 1.8.5, ordinateur Dell G3.

Javascript est-il monothread ?

En tant que langage de script de navigateur, l'objectif principal de JavaScript est d'interagir avec les utilisateurs et de manipuler le DOM. Cela détermine qu'il ne peut être qu'un seul thread, sinon cela entraînera des problèmes de synchronisation très complexes.

Un fil de discussion est essentiellement un processus unique qu'un programme peut utiliser pour accomplir une tâche. Chaque thread ne peut exécuter qu'une seule tâche à la fois :

Task A --> Task B --> Task C
Copier après la connexion

Chaque tâche s'exécutera séquentiellement ; une tâche doit être terminée avant que la suivante puisse commencer.

Comme mentionné précédemment, de nombreux ordinateurs possèdent désormais plusieurs cœurs et peuvent donc effectuer plusieurs opérations à la fois. Les langages de programmation qui peuvent prendre en charge plusieurs threads peuvent utiliser plusieurs cœurs pour effectuer plusieurs tâches simultanément :

Thread 1: Task A --> Task B
Thread 2: Task C --> Task D
Copier après la connexion

Traditionnellement, JavaScript est monothread. Même avec plusieurs cœurs, vous ne pouvez lui faire exécuter des tâches que sur un seul thread appelé thread principal. Notre exemple ci-dessus ressemble à ceci :

Main thread: Render circles to canvas --> Display alert()
Copier après la connexion

Au fil du temps, JavaScript a acquis des outils pour résoudre de tels problèmes. Les Web Workers vous permettent d'envoyer certains traitements JavaScript à un thread distinct (appelé Worker) afin que vous puissiez exécuter plusieurs blocs JavaScript en même temps. En règle générale, vous utiliserez un travailleur pour exécuter des processus coûteux sur le thread principal afin qu'il ne bloque pas l'interaction de l'utilisateur.

  Main thread: Task A --> Task C
Worker thread: Expensive task B
Copier après la connexion

Dans cet esprit, ouvrez à nouveau la console JavaScript de votre navigateur et jetez un œil à simple-sync-worker.html (pour le voir fonctionner en temps réel). Il s'agit d'une réécriture de l'exemple précédent qui calculait 10 millions de dates dans un thread de travail distinct. Désormais, lorsque vous cliquerez sur le bouton, le navigateur pourra afficher le paragraphe avant la fin du calcul de la date. La première opération ne bloque plus la seconde.

Une caractéristique majeure du langage JavaScript est qu'il est monothread, ce qui signifie qu'il ne peut faire qu'une seule chose à la fois. Alors pourquoi JavaScript ne peut-il pas avoir plusieurs threads ? Cela peut améliorer l’efficacité.

JavaScript est monothread, selon son objectif. En tant que langage de script de navigateur, l'objectif principal de JavaScript est d'interagir avec les utilisateurs et de manipuler le DOM. Cela détermine qu'il ne peut être qu'un seul thread, sinon cela entraînera des problèmes de synchronisation très complexes. Par exemple, supposons que JavaScript ait deux threads en même temps. Un thread ajoute du contenu à un certain nœud DOM et l'autre thread supprime le nœud. Dans ce cas, quel thread le navigateur doit-il utiliser ?

Ainsi, afin d'éviter toute complexité, JavaScript est monothread depuis sa naissance. Cela est devenu la fonctionnalité principale de ce langage et ne changera pas à l'avenir.

Afin de profiter de la puissance de calcul des CPU multicœurs, HTML5 propose le standard Web Worker, qui permet aux scripts JavaScript de créer plusieurs threads, mais les threads enfants sont entièrement contrôlés par le thread principal et ne doivent pas faire fonctionner le DOM. . Par conséquent, cette nouvelle norme ne modifie pas la nature monothread de JavaScript.

Recommandations associées : Tutoriel d'apprentissage Javascript

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!

Étiquettes associées:
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers numéros
c++ appelle javascript
Depuis 1970-01-01 08:00:00
0
0
0
Qu’est-ce que le garbage collection JavaScript ?
Depuis 1970-01-01 08:00:00
0
0
0
Que sont les fonctions de hook JavaScript ?
Depuis 1970-01-01 08:00:00
0
0
0
Comment obtenir la date actuelle en JavaScript ?
Depuis 1970-01-01 08:00:00
0
0
0
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal