static int c = 2; // maksymalna ilosć ogórków na talerzyku static void Main(string[] args) { MonitorForSpeaking monitorForSpeaking = new MonitorForSpeaking(N); MonitorForDrinking monitorForDrinking = new MonitorForDrinking(N, w, c); for (int i = 0; i < N; i++) { Thread thread; if (i == 0) { King king = new King(i, monitorForSpeaking, monitorForDrinking); thread = new Thread(new ThreadStart(king.DoWork)); } else { Knight knight = new Knight(i, monitorForSpeaking, monitorForDrinking); thread = new Thread(new ThreadStart(knight.DoWork)); } thread.Start(); } Servant servant1 = new Servant(monitorForDrinking); Thread thread1 = new Thread(new ThreadStart(servant1.DoWork1)); thread1.Start(); Servant servant2 = new Servant(monitorForDrinking); Thread thread2 = new Thread(new ThreadStart(servant2.DoWork2)); thread2.Start(); }
public Knight(int myId, MonitorForSpeaking monitor1, MonitorForDrinking monitor2) { this.myId = myId; this.monitorForSpeaking = monitor1; this.monitorForDrinking = monitor2; var random = new Random((int)myId); sleepTime = (int)(random.NextDouble() % 5000) + 3000; storyTime = (int)(random.NextDouble() % 5000) + 3000; }
public King(int myId, MonitorForSpeaking monitor1, MonitorForDrinking monitor2) : base(myId, monitor1, monitor2) { }
public Servant(MonitorForDrinking monitor) { this.monitor = monitor; }