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
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
Bonjour,
il te suffit d'utiliser un flag (booléen).Non ?
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; }
A+
Tu es sur qu'on parle de javascript ??Quelqu'un sait-il comment implanter un MUTEX en javascript?
Javascript et processus ???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)
Bizarre tout ça !!
Abus de langage, non ?Envoyé par eric190
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 ?
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
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...
J'ai édité mon commentaire...
La programmation concurrente en JS existe avec AJAX.
synchrone ou assychrone ? c'est spécifique à la communication client serveur de l'ajax
js fonctionne en bulle, pas en thread;
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...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager