IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Multi-threading en Javascript


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Multi-threading en Javascript
    Bonjour,

    Bien que Javascript ne supporte pas le multi-threading, le développement présenté ici s'en rapproche étonnamment. Ce système ne permet évidemment pas d'accélérer l'exécution des programmes, car aucun environnement multi-processus ne peut le faire sans ajouter de processeurs, mais il permet d'étudier de nouveaux paradigmes de programmation et s'addresse donc aux curieux qui veulent explorer de nouveaux territoires.

    L'interactivité des interfaces graphiques est généralement basée sur l'emploi d'événements ou de listeners, ce qui laisse les utilisateurs déterminer les séquences d'opérations qui leur permettront d'effectuer leurs tâches, mais elle conduit souvent à la programmation dite spaghetti. La programmation quasi-multi-thread proposée dans ce projet invite le programmeur à décomposer les programmes en activités indépendantes et à penser en termes d'ordonnancement. Elle est particulièrement utile pour représenter des animations ou des processus industriels. Elle est basée sur les techniques modernes de synchronisation des processus et correspond aux théories CSP (Concurrent Sequential Processus) de Hoare ou CCS (Calculus of Communicating Systems) de Milner.

    Bon amusement!

    Claude

  2. #2
    LEK
    LEK est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    715
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 715
    Points : 470
    Points
    470
    Par défaut
    Salut, l'article semble intéressant en effet. Mais il y a bien d'autres librairies javascript qui contiennent une gestion de thread et permettent un développement structuré sans pour autant avoir un code aussi verbeux, il me semble.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Salut,

    Je réponds à ce sujet qui date un peu, le multi-threading en javascript est tout à fait possible en utilisant la technologie des webworkers apporté par le HTML5.

    La différence principale avec un environnent multi-threadé standard est que les ressources mémoires ne sont pas partagées entre le webworker et le thread principal, la référence d'un objet n'est donc pas visible d'un thread à un autre. Les threads communiquent par échange de message il est donc possible d'implémenter un algorithme de synchronisation et de gestion des appels de méthodes concurrents en suivant un patron de conception de type event-behavior.

    Un certain nombre de framework JavaScript permettent de structurer la programmation entre threads, dont oodk-js, un framework OOP supportant entre autre la programmation concurrente:
    https://github.com/GOMServices/oodk-js-oop-for-js

    Les webworkers fournissent des possibilités très puissantes en traitement de calcul lourd et apporte une réelle solution au développement de logiciel à grande échelle côté client au delà des applications jetables et web app minimalistes.

    Qui sait Javascript dominera peut-être l'industrie du web dans un avenir proche

  4. #4
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    lorsque les systèmes n'étaient pas multithread voire pas multi process on utilisé les événements pour faire comme si

    l'idée est simple
    le systeme (le navigateur) place des événements dans une file à chaque cycle il prends l'événement dans la file et le donne à traiter au premier gestionnaire intéressé.
    celui-ci fait sont travail et rends la main
    le système donne l'événement au gestionnaire suivant
    et on recommence on passe à l'événement suivant lorsque il n'y a plus de gestionnaire ou que le gestionnaire interrompt la propagation.

    pour avoir quelque chose qui ressemble à du multitâche on passe le plus souvent possible dans la boucle d'événement.
    si un traitement est long on traite une partie on génère un événement pour indiquer au systeme qu'il faut continuer avec toutes les info pour le faire.
    l'événement est placé dans la file et lorsque tous les événement le précédent dans la file sont traités c'est au tour de celui-ci qui poursuit le traitement lourd.

    par exemple à la place de récupérer les donnée d'un formulaire puis calculer les stats, les placer dans un tableau, calculer le graphe et l'afficher
    le handler du bouton de soumission va récupérer les donnés et émettre un événement "calculer_les_stat" et rendre la main
    le gestionnaire de calcul fera son travail et émettre "calculer_graphe" etc.

    au final l'utilisateur va cliquer et comme si le système était multitâche il verra son graphe se mettre à jour en arrière plan.

    cette façon de programmer issue de la programmation événementielle
    Elle s'appelle multitâche coopératif et à donnée lieu à des études théoriques et formelles
    http://www-sop.inria.fr/meije/rp/FairThreads/
    http://www-sop.inria.fr/indes/rp/Fai...FTC/index.html
    http://www-sop.inria.fr/indes/rp/Fai...irThreads.html

    Alors sans aller jusqu'à implémenter cette approche à 100%
    pensez à https://developer.mozilla.org/en-US/...ggering_events
    faites des handler courts
    vos pages paraitrons plus fluides.

    enfin il y a aussi les http://www.w3schools.com/html/html5_webworkers.asp

    A+JYT

Discussions similaires

  1. Tri multi-threadé
    Par Tifauv' dans le forum C
    Réponses: 8
    Dernier message: 28/06/2007, 09h00
  2. Réponses: 2
    Dernier message: 15/05/2004, 18h33
  3. Réponses: 16
    Dernier message: 30/01/2004, 11h05
  4. [VB6][active x] faire du multi-thread avec vb
    Par pecheur dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 20/05/2003, 12h01
  5. [Kylix] exception qtinft.dll et multi-threading
    Par leclaudio25 dans le forum EDI
    Réponses: 3
    Dernier message: 27/03/2003, 18h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo