Example #1
0
        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();
        }
Example #2
0
        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;
        }
Example #3
0
 public King(int myId, MonitorForSpeaking monitor1, MonitorForDrinking monitor2) : base(myId, monitor1, monitor2)
 {
 }
Example #4
0
 public Servant(MonitorForDrinking monitor)
 {
     this.monitor = monitor;
 }