Dans Dijkstra's Paper "" Humble Programmer " , il mentionne qu'il a donné des volontaires un problème à résoudre:
"J'ai géré une petite expérience de programmation avec des volontaires vraiment expérimentés, mais quelque chose de tout à fait inattendu et assez inattendu est arrivé. Aucun de mes volontaires n'a trouvé la solution évidente et la plus élégante. Lors de l'analyse plus étroite, cela s'est avéré avoir une source commune: leur notion de répétition était si étroitement liée à l'idée d'une variable contrôlée associée à intensifier, qu'ils ont été bloqués mentalement de voir l'évidence. Leurs solutions étaient moins efficaces, difficiles à comprendre, et cela leur a fallu très longtemps pour les trouver. "
Quel était le problème de Dijkstra a donné aux volontaires? Quelles étaient les solutions?
Le problème "Dining Philosophers" était le problème présenté.
Fondamentalement, il y a 5 philosophes qui doivent manger. (Imaginez une assiette de nourriture sans fin en face de chaque philosophe), entre chaque plaque est une fourchette (5 plaques, 5 fourches, 5 philosophes).
Un philosophe ne peut manger que s'il tient à la fois la fourche à droite et la fourchette à gauche. (Seuls deux philosophes peuvent manger à tout moment).
Une fourche peut être ramassée à tout moment, elle est disponible et déposée si elle est tenue. Chaque fourche doit être ramassée interdépendamment. (un à la fois).
Alors qu'un philosophe ne mange pas, ils pensent (la nécessité d'alterner les états est ce qui conduit le problème).
Comment permettez-vous à chacun d'entre eux de manger et d'alterner la pensée (afin que les autres puissent manger) sans créer de système sans forme (où un philosophe tient une fourchette et attend l'autre, empêchant ainsi un autre philosophe de manger).
Cela a ses racines dans des systèmes concurrents et constitue une question typique de l'université présentée lors de la discussion de la concurrence.
Je crois que les algorithmes 4 ou 5 "officiels" ont été développés pour résoudre le problème, mais une recherche rapide sur Google pour "Le problème des philosophes de restauration" vous permettra d'obtenir une viabilité de résultats.
Pour plus de détails sur ce problème à partir de Standford U, veuillez visiter: http://academicearth.org/lecures/dining-philosophe-problem
L'article Wikipedia est situé à: http://fr.wikipedia.org/wiki/dining_philosophers_problem
Une solution de MSDN Magizine est située à: http://msdn.microsoft.com/en-us/magazine/dd882512.aspx
Si vous lisez la version originale du papier dans les notes de bas de page à la page 866 Il indique: "Actes du Congrès de l'IFIP 1965, 213-217." Solutions d'un problème dans le contrôle de programmation simultané. "
Le problème dans la concurrence et les ressources partagées est le "problème des philosophes de restauration". :-)
J'espère que cela pourra aider.