Je lisais des informations sur les travailleurs Web dans HTML5, mais je sais que JavaScript est à thread unique.
Ma question est:
Comment les travailleurs Web effectuent-ils un travail multithread alors? ou comment le simulent-ils si ce n'est pas vraiment multithread? Cela ne me semble pas clair ici.
Comme plusieurs commentaires l'ont déjà souligné, les travailleurs sont vraiment multithreads.
Quelques points qui peuvent aider à clarifier votre pensée:
Vous créez un fichier .js en tant que "travailleur" et les processus sont exécutés dans un thread séparé. Vous pouvez transmettre des données JSON entre celui-ci et le fil "principal". Les travailleurs n’ont cependant pas accès à certaines choses comme le DOM.
Donc, si, par exemple, vous vouliez résoudre des problèmes mathématiques complexes, vous pouvez laisser l'utilisateur saisir des éléments dans le navigateur, transmettre ces variables au travailleur, le laisser faire le calcul en arrière-plan, tandis que dans le fil principal, laisser l'utilisateur le faire. afficher une barre de progression ou autre chose, puis lorsque le travailleur a terminé, il renvoie la réponse et vous l'imprimez sur la page. Vous pouvez même résoudre plusieurs problèmes de manière asynchrone et renvoyer les réponses dans le désordre à la fin. Génial!
Le navigateur lance un fil avec le javascript que vous voulez exécuter. C'est donc un vrai fil, avec ce truc web workers, votre js n'est plus mono-thread.