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 :

Exclusion Mutuelle (MUTEX)


Sujet :

JavaScript

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 97
    Points : 65
    Points
    65
    Par défaut Exclusion Mutuelle (MUTEX)
    Bonjour,
    Quelqu'un sait-il comment implanter un MUTEX en javascript?
    Cela me servirai à donner l'accès à une ressource à un seul processus ce qui n'est pas le cas lors de déclenchement d'évènements. (A ce que j'ai vu)

    Merci

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    il te suffit d'utiliser un flag (booléen).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (blnRessourceUtilisee)
    alert('Pas glop !');
    else {
    blnRessourceUtilisee = true;
    // Utilisation de la ressource
    blnRessourceUtilisee = false;
    }
    Non ?

    A+

  3. #3
    Membre chevronné
    Avatar de eric.pommereau
    Homme Profil pro
    Ingénieur, pôle cartographie
    Inscrit en
    Décembre 2004
    Messages
    715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur, pôle cartographie
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2004
    Messages : 715
    Points : 1 790
    Points
    1 790
    Par défaut
    Quelqu'un sait-il comment implanter un MUTEX en javascript?
    Tu es sur qu'on parle de javascript ??

    Cela me servirai à donner l'accès à une ressource à un seul processus ce qui n'est pas le cas lors de déclenchement d'évènements. (A ce que j'ai vu)
    Javascript et processus ???

    Bizarre tout ça !!

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par eric190
    Tu es sur qu'on parle de javascript ??

    Javascript et processus ???

    Bizarre tout ça !!
    Abus de langage, non ?

  5. #5
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Bonjour tous le monde,

    Je serais surpris d'apprendre que javascript aie des processus :-)

    A ma connaissance, une seule fonction est exécutée à la fois. Par contre
    en cas d'évènements déclenchés pendant l'exécution d'une fonction, il sont
    empilés en attente est exécutés après, dans l'ordre de leur déclenchement.

    Qqn peut confirmer ?

  6. #6
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 97
    Points : 65
    Points
    65
    Par défaut
    Effectivement
    un seul processus pour javascript et merci marcha pour cette précision.
    Lors d'un déclenchement d'évènement, il me semblait qu'il pouvait y avoir plusieurs processus qui fonctionnaient en même temps mais après vérification ce n'est pas le cas!
    Donc je n'ai plus besoin de MUTEX.
    Merci

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Bonjour...

    Je up ce topic parce que je suis confronté à ce problème.
    Je fais des requêtes AJAX asynchrones, et là c'est un processus léger (thread) différent qui fait la requête. Alors que le script continue de s'exécuter, la requête serveur se fait en parallèle. AJAX permet de la programmation concurrente en JS.

    Pour preuve, faites une requête AJAX asynchrone, faire un alert après le lancement de la requête, et faites un alert pour traiter la requête une fois réceptionnée... Et là magie, vous avez deux fenêtres d'alerte, ce qui n'est pas permis en JS sans AJAX.

    La réponse de E.Bzz n'est pas satisfaisante, puisque que avec ce bout de code, le test <si libre verrouiller> s'effectue en plusieurs instructions, et non en une seule opération atomique.

    Dès lors qu'on a la possibilité de faire du script asynchrone, ce qui est le cas depuis l'arrivée des requêtes AJAX, on est amené à ce problème.

    La question persiste donc : quelqu'un connaît-il l'existence de verrou en JS ? Pour ma part je n'en connais pas.

    Toujours est-il qu'on peut faire des choses, et je met ici ma solution. L'idée est de faire un setInterval pour traiter la requête. Cela permet de faire une attente semi-passive, semi-active, où le thread se réveille tout seul de temps en temps de manière totalement gérée. A chaque fois qu'il se réveille, il suffit de faire le test sur la variable verrou, si elle est libre, continuer le traitement, sinon, réessayer plus tard...

  8. #8
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par GMany Voir le message
    La question persiste donc : quelqu'un connaît-il l'existence de verrou en JS ?
    Pas de notion de "verrou", puisque, comme expliqué plus haut, il ne peut pas y avoir d'accès concurrent, les instructions étant exécutées les unes à la suite des autres ...

    A+

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    J'ai édité mon commentaire...
    La programmation concurrente en JS existe avec AJAX.

  10. #10
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Citation Envoyé par GMany Voir le message
    J'ai édité mon commentaire...
    La programmation concurrente en JS existe avec AJAX.
    Je ne suis pas d'accord, cela n'est pas concurrent au sens multithread. mais
    si tu as une source, un article qui te fais penser ça, je le lirai avec intérêt.

  11. #11
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 643
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    synchrone ou assychrone ? c'est spécifique à la communication client serveur de l'ajax

    js fonctionne en bulle, pas en thread;

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Je viens de lire cet article :
    http://www.javascriptkata.com/2007/0...t-use-threads/

    Il rejoint ton avis sur la question.

    Mais comment expliques-tu qu'il est possible de déclencher plusieurs alertes ?
    Une alerte est une instruction bloquante, elle stoppe le script jusqu'à ce que le visiteur ait appuyé sur le bouton OK.

    Pourtant, il est possible de déclencher un second alerte après réception d'une requête AJAX asynchrone (sous Firefox ou IE). C'est bien la preuve que le premier (du script principal) n'a pas été bloquant pour la requête, et n'a pas empêché son traitement après réception.

    Noter cependant : l'alerte déclenché par le traitement de la requête AJAX réceptionnée bloque le traitement du script principal.

    Alors que s'est-il passé ?
    Comment c'est réellement implanté ? Ce n'est pas le problème, la question est comment ça devrait être implanté ? ...

    Moi j'y vois des threads. Parce que d'un navigateur à l'autre, la gestion va être différente... Je viens de le voir d'ailleurs, entre Firefox, IE et Chrome (qui lui ne permet pas de lancer plusieurs alertes). Si l'un fait de la pseudo-concurrence, ça ne veut pas dire que plus tard il ne va pas évoluer vers quelque chose de plus juste. Il est également possible qu'il existe un navigateur qui gère réellement des threads.

    Dans le doute, ma solution avec un setInterval ne mange pas de pain...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exclusion mutuelle de sressources, mutex
    Par aurelie689 dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 17/05/2009, 22h51
  2. Exclusion mutuelle
    Par Jahjouh dans le forum C++
    Réponses: 4
    Dernier message: 28/11/2005, 21h18
  3. Utiliser un héritage avec exclusion mutuelle correctement
    Par akecoocoo dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 20/11/2005, 22h54
  4. Exclusion mutuelle
    Par Jahjouh dans le forum C++
    Réponses: 15
    Dernier message: 24/09/2005, 12h32
  5. [Thread][Synchronisation] Exclusion mutuelle
    Par masto dans le forum Concurrence et multi-thread
    Réponses: 8
    Dernier message: 20/01/2005, 16h02

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