Klasyczne problemy współbieżności i ich rozwiązania Jarosław Kuchta Klasyczne problemy współbieżności i ich rozwiązania
Klasyczne problemy współbieżności Problem producenta i konsumenta Problem czytelników i pisarzy Problem pięciu filozofów
Producent i konsument – sytuacja idealna Czekam Produkuję dane Konsumuję dane Produkuję dane Czekam Konsumuję dane Produkuję dane Czekam Konsumuję dane Produkuję dane Czekam
Producent produkuje szybciej niż konsument konsumuje Bufor Konsument Czekam Produkuję dane Produkuję dane Konsumuję dane Dane oczekujące Produkuję dane Konsumuję dane Dane oczekujące Produkuję dane Dane oczekujące Konsumuję dane
Problem wielkości bufora Jeśli średni czas konsumpcji jest krótszy od średniego czasu produkcji – bufor może być niepotrzebny. Jeśli średni czas konsumpcji jest dłuższy od średniego czasu produkcji – w nieskończonym czasie dowolnej wielkości bufor może być za krótki. Jeśli średni czas konsumpcji jest równy od średniemu czasowi produkcji – ustala się tak wielkość bufora, aby wystarczył na pewien czas. Wniosek – jeśli nie możemy zagwarantować, że średni czas konsumpcji będzie mniejszy lub równy średniemu czasowi produkcji, to zawsze jakaś porcja danych może zostać utracona.
Problem czytelników i pisarzy czytelnia musi być pusta, aby pisarz mógł pisać Pisarz Czytelnik Czytelnia Czytelnik Pisarz Czytelnik Pisarz wielu czytelników może czytać naraz
Rozwiązanie z możliwością zagłodzenia pisarzy Czytelnik Czy czytelnia jest pusta? T T Czy są w czytelni inni czytelnicy? N N Czekam Wchodzę Wchodzę N Czy w czytelni jest pisarz? T Czekam
Rozwiązanie z możliwością zagłodzenia czytelników Pisarz Czytelnik T Czy czytelnia jest pusta? T Czy pisarz czeka na wejście? Czekam N N Czekam Wchodzę T Czy są w czytelni inni czytelnicy? N Wchodzę N Czy w czytelni jest pisarz? T Czekam
Rozwiązanie poprawne Pisarz Czytelnik Czy czytelnicy czekają na wejście? Wpuść wszystkich czytelników Czy pisarz czeka na wejście? Czekam N N Czy czytelnia jest pusta? T T Czy są w czytelni inni czytelnicy? N N Czekam Wchodzę Wchodzę N Czy w czytelni jest pisarz? T Czekam
Problem pięciu filozofów miska ryżu pałeczka każdy filozof do jedzenia potrzebuje dwóch pałeczek
Rozwiązanie z możliwością zakleszczenia Filozof Czy lewa pałeczka jest wolna? N Czekam T Podnoszę lewą pałeczkę Czy prawa pałeczka jest wolna? N Czekam Myślę T Podnoszę prawą pałeczkę Jem Odkładam pałeczki
Rozwiązanie z możliwością zagłodzenia Filozof Czy obie pałeczki są wolne? N Czekam T Podnoszę obie pałeczki Myślę Jem Odkładam pałeczki
Rozwiązanie poprawne Możliwe tylko przy wprowadzeniu arbitra (służącego) Służący ma dbać o to, aby najwyżej czterech filozofów naraz konkurowało o pałeczki. Jeśli piąty filozof, chce podnieść pałeczkę, to służący go powstrzymuje do czasu, aż pozostałych czterech skończy jeść.