Discussion:Algorithme de la boulangerie

message: L'algorithme présent présentait plusieurs erreurs :
Affectation à CHOIX au lieu de CHOIX[i]
oublie du modulo sur le J=i+1
Erreurs sur l'attente en début de boucle TANT QUE J : on attend pas tant que choix[i] <> 1 (ce qui est garanti au dessus), mais bien tant que choix[j]=1
Par ailleurs, j'ai détaillé la ligne  	 COMPTEUR = 1 + max(COMPTEUR) qui voulait dire COMPTEUR[i]=1 + max (COMPTEUR[0],...,COMPTEUR[N-1])
et rajouté une exclusion en début de d'algorithme.
En effet, si on considère que l'auto attribution du compteur est non-interruptible, cette section est inutile mais aussi la boucle TANTQUE CHOIX[j]=1, puisque que COMPEUR[i] est certes indéterminé mais égal soit à -1 soit à une valeur supérieur que compteur[j] donc l'effet est le même par la suite.
Si elle est interruptible, deux thread pourraient s'attribuer le même ticket
Maintenant, j'espère qu'il n'y a plus d'erreur dans l'algorithme... (à relire !!) Ulrich Von Beck 7 mars 2008 à 15:00 (CET)
thread_title:  Anciennes versions 

message: Bonjour,
J'ai réécrit la page entièrement pour 2 raisons: l'algorithme présenté était toujours incorrect et il y avait trop peu d'explications (ou bien elles étaient fausses) concernant ses prérequis et son fonctionnement.
J'en ai profité pour y ajouter un petit historique ainsi qu'une comparaison (implicite) avec l'algorithme de Dijkstra. Ce dernier mérite une page à lui tout seul, qu'il faudra créer ultérieurement (ce que je finirai par faire quand j'aurai le temps).
Si vous pensez qu'il y a une erreur conceptuelle dans la description de l'algorithme, je vous saurais gré d'en discuter AVANT de faire des modifications. Le plus probable est en effet que vous soyiez vous-même en train de commettre une erreur. Il ne s'agit pas de prétention déplacée de ma part, mais simplement la conséquence d'avoir passé énormément de temps à décortiquer l'algorithme, à l'implémenter et à l'enseigner. Je sais donc d'expérience directe (mais aussi par d'autres lectures) que beaucoup de gens ne le comprennent pas vraiment.
La présentation est sûrement améliorable. Du point de vue du contenu, il faudrait rajouter une section sur l'interaction de l'algorithme avec les modèles de consistence mémoire (là encore, dès que j'aurai le temps, si personne ne l'a fait d'ici là).
Merci!
--OlCe (d) 23 février 2010 à 18:27 (CET)
thread_title:  Réécriture de la page 

message: Je souhaiterais proposer cet article comme étant un bon article. Avant de lancer la procédure officielle, cependant, je préfèrerais que d'autres personnes y jettent un coup d'oeil.
Merci d'avance pour vos commentaires!
--OlCe (d) 23 février 2010 à 20:05 (CET)
thread_title:  Demande de relecture en vue de proposer l'article comme bon article 

message: Je trouve la présentation vraiment didactique. Bravo !
Néanmoins la revendication que l'algorithme puisse s'exécuter sans support d'opérations atomiques me parait un peu trompeuse en présence de caches. L'algorithme semble imposer que l'ordre des écritures/lectures soit proche de la sémantique séquentielle habituelle (dépendance causale des lectures et des écritures). Donc il faut que le matériel ait une gestion de la cohérence des caches fonctionnelle (sauf erreur de ma part, elle est désactivable sur ARM) ou des opérations atomiques de barrières mémoires (si les caches ne sont jamais écrits en mémoire tout le monde passe ensemble dans la section critique). Sans opérations atomiques et sans précautions le code me semble aussi très sensible à des optimisations agressives du compilateur (déplacement ou suppression du code si les deux tableaux partagés ne sont pas indiqués comme VOLATILE).
Mounieg (discuter) 29 mars 2014 à 01:55 (CET)
thread_title:  Sémantique séquentielle et atomicité