• [^] # Re: workers ...

    Posté par . En réponse au journal Réflexion sur ASM.js ou quand le javascript deviens enfin performant :. Évalué à 2. Dernière modification le 20 mars 2013 à 18:22.

    Les web workers permettent de faire du parallélisme en JavaScript sans danger grâce à une forte séparation entre les contextes d'exécution.

    Tu ne peux pas accéder aux données d'un autre contexte, il n'y a donc pas de risque d'interférer. La seule façon de transférer des données était de les passer sous forme de chaînes de texte ou d'objet JSON qui seront clonés. Il existe maintenant la possibilité de passer un ArrayBuffer (tableau de nombres) qui ne sera pas cloné, mais transférés d'un contexte à un autre, comme s'il disparaissait du premier contexte. C'est plus rapide, car cela peut se faire sans copie de mémoire, mais ça ne fonctionne pas sur tous les navigateurs et ça demande plus de travail qu'un simple JSON.

    Tu as accès à la plupart des fonctions de base de JavaScript pour faire tes calculs (Array, Object, Math, setInterval(), …). Tu as aussi accès aux fonctionnalités réseau et peut donc envoyer/recevoir des données au serveur. Par contre tu n'as pas accès au DOM. Il te faudra envoyer des messages au thread GUI (le thread principal de la page web qui a créé les web workers) qui se chargera de manipuler le DOM.

    Les web workers sont donc souvent utilisés pour faire des longs calculs sans bloquer le thread GUI et pour traiter les entrées/sorties avec le serveur.

    Je te conseille la documentation de Mozilla Developer Network (MDN) qui offre souvent les meilleures informations:
    https://developer.mozilla.org/en-US/docs/DOM/Worker
    https://developer.mozilla.org/en-US/docs/DOM/Using_web_workers

    Quant aux erreurs à éviter et aux limites, je n'en ai pas en tête, si ce n'est bien vérifier la compatibilités des différentes fonctionnalités avec les navigateurs (ça se trouve en bas des pages sur MDN).