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; } }
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); } }