示例#1
0
        public void LadujDostawczak()
        {
            coRobie = Zajety.laduje;
            Przesylka tymczasowa;

            skrzynkaDoRozladunku.mutSkrz.WaitOne();
            if (skrzynkaDoRozladunku.zaladunek.Count != 0)
            {
                tymczasowa = skrzynkaDoRozladunku.zaladunek.Dequeue();
                Thread.Sleep(100);
                skrzynkaDoRozladunku.mutSkrz.ReleaseMutex();

                Thread.Sleep(100 + (int)(tymczasowa.masa * 30));

                dostawczakDoZaladunku.mutDos.WaitOne();
                dostawczakDoZaladunku.zaladunek.Enqueue(tymczasowa);
                dostawczakDoZaladunku.mutDos.ReleaseMutex();
            }
            else
            {
                skrzynkaDoRozladunku.mutSkrz.ReleaseMutex();
                skrzynkaDoRozladunku  = null;
                dostawczakDoZaladunku = null;
                Thread.MemoryBarrier();
                coMaszRobic = Zajety.wolny;
            }
        }
示例#2
0
        public Miasto(char nazwa, int iloscOkienek, int iloscMiast)
        {
            this.nazwa = nazwa;

            skrzynki = new Skrzynka[iloscMiast];
            for (int i = 0; i < iloscMiast; i++)
            {
                skrzynki[i]        = new Skrzynka();
                skrzynki[i].miasto = (char)(i + 65);
            }

            okienka = new Okienko[iloscOkienek];
            for (int i = 0; i < iloscOkienek; i++)
            {
                okienka[i] = new Okienko();
            }

            kierowniczka            = new Kierowniczka(okienka, skrzynki);
            kierowniczka.pracownicy = pracownicy;
            kierowniczka.miasto     = nazwa;
            kierowniczka.klienci    = klienci;
            kierowniczka.dostawczakiDoRozladunku = dostawczakiDoRozladunku;
            kierowniczka.dostawczakiDoZaladunku  = dostawczakiDoZaladunku;


            lock (miasta)
            {
                miasta.Add(this);
            }
        }