private void Jedzenie(UcztujacyFilozofowie filozof) { int czas = new Random().Next(filozof.Czas); Console.WriteLine("Filozof " + filozof.Id + " zaczął jeść."); Thread.Sleep(czas); Console.WriteLine("Filozof " + filozof.Id + " skończył jeść."); }
private void Start(Object args) { UcztujacyFilozofowie filozof = (UcztujacyFilozofowie)args; int prawy = filozof.Id; int lewy = (filozof.LiczbaFilozofow + filozof.Id + 1) % filozof.LiczbaFilozofow; while (true) { Myslenie(filozof); if (prawy == filozof.LiczbaFilozofow - 1) { WezWidelec(lewy, filozof); WezWidelec(prawy, filozof); } else { WezWidelec(prawy, filozof); WezWidelec(lewy, filozof); } Jedzenie(filozof); OdlozWidelec(lewy, filozof); OdlozWidelec(prawy, filozof); } }
private void OdlozWidelec(int i, UcztujacyFilozofowie filozof) { filozof.Widelce[i].Release(); Console.WriteLine("Filozof " + filozof.Id + " odkłada widelec " + i + "."); }
private void WezWidelec(int i, UcztujacyFilozofowie filozof) { filozof.Widelce[i].WaitOne(); Console.WriteLine("Filozof " + filozof.Id + " bierze widelec " + i + "."); }