javascript - Comment js peut-il obtenir un effet multithread?
伊谢尔伦
伊谢尔伦 2017-05-19 10:26:22
0
5
609

Comment js peut-il obtenir un effet multithread ?

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

répondre à tous(5)
过去多啦不再A梦

Parlons d'abord du principe d'exécution de JS : lorsque le moteur js exécute du code js, il est monothread, c'est-à-dire qu'un seul processus exécutera le code JS en même temps, et les fonctions de rappel sont également exécutées une par un (dans l'ordre des événements, pas dans l'ordre du code). La communication et la synchronisation asynchrones dans JS sont implémentées par un autre thread, indépendant du contexte du thread js. Prenons l'exemple de l'opération de synchronisation JS. Lorsque le moteur JS exécute l'opération setTimeout(callbackFunction, 100), il informera le thread de synchronisation que j'ai besoin de 100 millisecondes de synchronisation, puis le moteur JS entrera dans la boucle d'événements. Après 100 millisecondes, le moteur de synchronisation ajoute un événement ayant expiré à la file d'attente des événements. Le moteur JS lit l'événement de délai d'attente dans la file d'attente et exécute la fonction callbackFunction. Si plusieurs événements sont ajoutés à la file d'attente des événements en même temps, le moteur JS n'exécutera les rappels qu'un par un. Il en va de même pour l'asynchrone. Le code JS lance une demande de communication, le thread de communication effectue l'opération de communication et ajoute l'événement d'achèvement à la file d'attente des événements une fois l'opération terminée. Le moteur JS extrait l'événement de la file d'attente et appelle un rappel pour traiter le résultat de la communication. Lorsque le moteur JS exécute la fonction de rappel, il ne peut pas répondre à d'autres événements en même temps.

黄舟

Le travailleur Web de JS peut effectuer certaines opérations à grande échelle sur le thread d'arrière-plan sans bloquer le thread principal ; il communique avec onmessage et le thread principal via postmessage ; mais il a des restrictions et ne peut pas faire fonctionner le DOM et certaines API pour lesquelles vous pouvez lire la documentation ; détails.

洪涛

Javascript est monothread.

黄舟

Javascript est threadé. Si vous souhaitez obtenir des effets multithreads, vous pouvez envisager node.js pour atteindre l'objectif via des événements de nœud.

漂亮男人

S'il est utilisé dans un navigateur, il existe désormais un service worker qui peut exécuter des js en arrière-plan, ce qui revient à ouvrir un fil de discussion supplémentaire. Je n'y connais pas grand chose, mais vous pouvez le découvrir si vous en avez besoin

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal