Domanda

Non sono un principiante in C# ma ho davvero bisogno di migliorare la mia comprensione, quindi ho scelto un classico problema di deadlock da codificare per aiutarmi ad apprendere alcuni dei concetti più avanzati di C#.IL Problema dei filosofi a tavola sembra buono, ma ho bisogno di un piccolo aiuto per iniziare.So che devo avvicinarmi ai "commensali" come oggetti, ma per simulare i ritardi casuali tra un pasto e l'altro, dovrei cercare di intrecciare ogni commensale in un thread separato?Ho bisogno di una sorta di "master" per monitorare tutte le azioni?Qualsiasi consiglio generale sul concetto di progettazione è il benvenuto, ma mi piacerebbe fare la programmazione grugnita come esercizio.Grazie!

È stato utile?

Soluzione

Penso che l'approccio migliore per simularlo sarebbe a Fork classe con un metodo come use() che tiene la forchetta (bool available = false) e a release() che lo rilascia.

UN Philosopher lezione con getFork(Fork) E releaseFork(Fork) che gestisce il mantenimento/rilascio dell'oggetto Fork (mi sembra che un timer andrebbe bene in un metodo useFork() quindi puoi davvero percepire lo stallo.

E per ultimo a DinningTable (o qualsiasi altro nome) classe che crea istanze ed esegue il log.Se prevedi di utilizzare i thread, qui è dove dovresti implementare un thread per ciascuno Philosopher concorrendo per il Fork.

Come suggerimento, potresti implementare a Plate Classe, con in mano una quantità di spaghetti che il Philosopher.useFork() metodo inferiore durante l'intervallo di tempo.In questo modo puoi vedere quale Philosopher finisce prima.

Lascerò le implementazioni per te, ovviamente, poiché il tuo obiettivo è imparare C#...secondo la mia esperienza, faresti meglio a imparare a fare qualcosa di concreto come queste lezioni ;) Inoltre, puoi trovare molte implementazioni su Google se vuoi imbrogliare...

Ti invito a condividere il codice dopo di esso.È un ottimo riferimento per lo studio.

Spero che questo ti aiuti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top