Question

Je ne suis pas un débutant en C# mais j'ai vraiment besoin d'améliorer ma compréhension, j'ai donc choisi un problème de blocage classique à coder pour m'aider à apprendre certains des concepts les plus avancés de C#.Le Problème des philosophes à manger Cela semble être une bonne solution, mais j'ai besoin d'un peu d'aide pour commencer.Je sais que je dois aborder les « convives » comme des objets, mais pour simuler les délais aléatoires entre les repas, dois-je envisager de filer avec chaque convive dans un fil de discussion séparé ?Ai-je besoin d’une sorte de « maître » pour surveiller toutes les actions ?Tout conseil général sur le concept de conception est le bienvenu, mais j'aimerais faire la programmation de base comme exercice.Merci!

Était-ce utile?

La solution

Je pense que la meilleure approche pour simuler ce serait un Fork classe avec une méthode comme use() qui tient la fourchette (bool available = false) et un release() cela le libère.

UN Philosopher cours avec getFork(Fork) et releaseFork(Fork) qui opère le maintien/relâchement de l'objet Fork (il me semble qu'un timer serait bien dans une méthode useFork() donc on peut vraiment percevoir l'impasse.

Et pour la fin un DinningTable (ou tout autre nom) classe qui crée des instances et effectue le journal.Si vous envisagez d'utiliser des threads, voici où vous devez implémenter un thread pour chacun Philosopher d'accord pour le Fork.

À titre de suggestion, vous pourriez mettre en œuvre un Plate Classe, tenant une quantité de spaghetti que le Philosopher.useFork() méthode inférieure au cours de la période.De cette façon, vous pouvez voir lequel Philosopher termine premier.

Je vous laisse bien sûr les implémentations, puisque votre objectif est d'apprendre le C#...d'après mon expérience, il vaut mieux apprendre en faisant quelque chose de concret comme ces cours ;) D'ailleurs, vous pouvez trouver plein d'implémentations sur Google si vous voulez tricher...

Je vous invite à partager le code après .C'est une excellente référence d'étude.

J'espère que cela vous aide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top