










Studiuj dzięki licznym zasobom udostępnionym na Docsity
Zdobywaj punkty, pomagając innym studentom lub wykup je w ramach planu Premium
Przygotuj się do egzaminów
Studiuj dzięki licznym zasobom udostępnionym na Docsity
Otrzymaj punkty, aby pobrać
Zdobywaj punkty, pomagając innym studentom lub wykup je w ramach planu Premium
Społeczność
Odkryj najlepsze uniwersytety w twoim kraju, według użytkowników Docsity
Bezpłatne poradniki
Pobierz bezpłatnie nasze przewodniki na temat technik studiowania, metod panowania nad stresem, wskazówki do przygotowania do prac magisterskich opracowane przez wykładowców Docsity
Opracowanie z zakresu tematu
Typologia: Prezentacje
1 / 18
Pobierz cały dokument
poprzez zakup abonamentu Premium
i zdobądź brakujące punkty w ciągu 48 godzin
Semafor ogólny (definicja klasyczna Dijkstry)
Semafor ogólny (definicja praktyczna BenAriego)
Semafor binarny (definicja klasyczna)
Semafor binarny (definicja praktyczna)
Semafor dwustronnie ograniczony
void Producent () { Dane dane; int i = 0; while (true) { Produkuj (out dane); P(Wolne); bufor [i] = dane; i = (i + 1) % N; V(Pełne); } } void Konsument () { Dane dane; int j = 0; while (true) { P(Pełne); dane = bufor [j]; j = (j + 1) % N; V(Wolne); Konsumuj (dane); } } Semaphore Wolne = N; Semaphore Pełne = 0; Dane[] bufor = new Dane[N];
void Czytelnik () { while (true) { Własne_Sprawy(); P(Wolne); Czytanie(); V(Wolne); } } void Pisarz () { while (true) { Własne_Sprawy(); PB(W); for (int j=0; j<M; j++) P(Wolne); Pisanie(); for (int j=0; j<M; j++) V(Wolne); VB(W); } } int M; // liczba czytelników int P; // liczba pisarzy Semaphore Wolne = N; // liczba miejsc w czytelni BinarySemaphore W = 1; // wzajemne wykluczanie się pisarzy
Pięciu filozofów (z możliwością zagłodzenia)