Evet arkadaşlar, bu ders videosunda, tartıştığımız yemek filozofları problem ifadesini uygulamak
için çözümü tartışacağız.
Doğru.
Umarım yemek filozofu problem ifadesini kendi başınıza çözmek için yeterince deneme yapmışsınızdır.
Son ders videosunda ödev programını zaten kurmuştuk.
Dolayısıyla, yemek filozofu problem ifadesinin çözümünü uygulamak için, filozof fonksiyonu
olan üç fonksiyonu uygulayacağız.
Sonra ikincisi filozof her iki kaşığa da erişir ve üçüncüsü filozof her iki kaşığı da serbest bırakır.
Yemek filozofu sorun bildiriminin tüm çözümü bu üç işlev tarafından uygulanmaktadır.
Dolayısıyla, bu problem cümlesinin çözümü boyunca, iki ana mantığı
program boyunca birçok kez uygulayacağız.
İlk mantık, filozof P Right'a nasıl bir kaşık s atanacağını söyler.
Örneğin, filozof P'nin kaşığa erişmek istediğini varsayalım.
S Bu nedenle, s kaşığının filozof P'ye verildiğini göstermek için aşağıdaki kod parçasını
uygulayacağız.
Yani, önce s kaşığının muteksini günlüğe kaydederiz çünkü s kaşığının durumunu değiştireceğiz,
böylece s kaşığının yeni durumu s kaşığının filozof P'ye atandığını yansıtır, bu yüzden
burada kaşığı kullanılıyor olarak işaretleyeceğiz.
Bu yüzden is used bayrağını true değerine eşitleyeceğiz ve filozof işaretçisi kaşığın atandığı filozofu
gösterecektir.
Değil mi?
Dolayısıyla burada kaşığın durumunu değiştirdiğiniz için kaşığın muteksini kilitlemeniz gerekir,
böylece siz kaşığın durumunu değiştirirken programın başka hiçbir iş parçacığı kaşığın durumuna erişemez
veya değiştiremez.
Değil mi?
Dolayısıyla, kaşığın durumunu bu şekilde değiştirdiğinizde, s kaşığının filozof P'ye atandığını
yansıtır Benzer şekilde, programımızda birden çok kez uygulayacağımız ikinci mantık, kaşığın nasıl
kullanılabilir hale getirileceğidir, değil mi?
Bunun anlamı şudur: Eğer kaşık zaten dolu ise ya da bir filozofa verilmişse, kaşığın yeni durumunun kaşığın
mevcut olduğunu yansıtması için kaşığın durumunu nasıl değiştirmelisiniz?
Yani yine kaşığın muteksini kilitleyeceksiniz çünkü kaşığın durumunu değiştiriyorsunuz ve kaşığı kullanılmıyor
olarak işaretleyeceksiniz ve filozofun işaretçisi null'a işaret edecek.
Değil mi?
Yani yapmanız gereken tek şey, kaşığın bir filozofa verilip verilmediğini yansıtacak şekilde kaşığın durumunu
nasıl değiştirdiğiniz veya güncellediğinizdir.
Değil mi?
Dolayısıyla, bu kodlama mantığı size bu problem ifadesinin çözümünde nasıl ilerleyeceğiniz konusunda bir fikir verecektir.
Şimdi klavyenin başına geçelim ve bu filozof fonksiyonuyla çözümümüzü uygulamaya başlayalım.