Şimdi, gelecek hafta, bir oran kilitleme API'sinin uygulanmasını tartışacağız.
Tamam.
Dolayısıyla bu API'nin uygulanması, önceki ders videosunda tartıştığımız Read Lock API'sinin uygulanmasından
çok farklı değildir.
Yani başlamak için.
Dolayısıyla, sistemdeki herhangi bir tehdit ve bu API'yi çağırdığında, bu doğru kilit nesnesi üzerinde
doğru kilidi elde edecek olan belirli bir iş parçacığının ve bu belirli iş parçacığının doğru bir tehdit olduğu anlaşılır.
Tamam.
Bu yüzden tekrar başlamak için durum muteksini kilitleyeceğiz.
Ve tüm mantığı kilitleme ve kilit açma arasında sandviç yapacaktık St. Mutex.
Şimdi yine üç vakayı ele alacaktık.
Birinci vaka.
Richard Sağ Kilit Nesnesi kullanılabilir olduğunda.
Bu kırmızı hak benzeri nesne bir hak tarafından kilitlendiğinde ve bu hayati iş parçacığı bu API'yi çağıran
iş parçacığından farklı olmadığında, yani iş parçacığı aynı okuma hakkı kilidi nesnesi üzerindeki hak kilidini almaya
çalıştığında ve bu nedenle tekrar kapsayıcılık özelliğini kapsar.
Ve Gears üç, bir yeniden yazma aşk nesnesinin, mevcut orijinal konudan farklı olan bir yazar konusu tarafından
sevildiğini söylüyor.
Tamam.
Bu yüzden bu üç vakayı teker teker ele alacaktık.
Şimdi Vaka bir'in uygulanmasını tartışalım.
Öyleyse tekrar, sağ dreadlock'un gerçekten mevcut olduğunu belirten if koşulunu yazalım.
Biraz hızlı gideceğim çünkü artık bu durumun ne anlama geldiğini anladınız.
Bu yüzden bazı alıntılar yapmama izin verin.
Dolayısıyla bu forests koşulu, sağ okuma kilidi nesnemin durumunun bu if cümlesiyle tutarlı olmasını
sağlar.
Şimdi, basitçe, bu kırmızı kilit nesnesinin durumunu, bu kırmızı sağ kilit nesnesinin artık haklı
bir tehdide ait olduğunu yansıtacak şekilde güncelleyeceğim.
Ve seyahat hakkı ile, bu treni yakalamamıza izin veriyor mu? D. Bu doğru mu yoksa tehdit mi?
Bunu bir API iş parçacığı self kullanarak yapabilirsiniz.
Ve ben bittim.
Yani Murdoch'ların kilidini aç ve.
Dolayısıyla bu, burada bir numaralı durumu kapsar, bu kırmızı kilit nesnesinin durumunu, caddenin aşağısında
sağ kilit nesnesinin bir basma hakkı tarafından sahiplenildiğini yansıtacak şekilde güncelledik.
Şimdi iki numaralı vakaya geliyoruz.
Yani iki numaralı vakanın uygulanması çok basittir.
Öncelikle, okunan sağ kilit nesnesi bir sürücü tehdidi tarafından kaydedilmeli ve bu sağ kilit nesnesi
üzerinde sahipliğe sahip olan Tread'in hakkı, şu anda bu sokak sağ kilit nesnesinin durumunu inceleyen
mevcut iş parçacığı olarak bir tehdit olarak görülmelidir.
Tamam.
Açıkçası, analizin değeri her yerde olabilir.
Herhangi bir pozitif tamsayı olabilir, bir olması gerekmez.
Ve özyinelemeli olma özelliğini uygulamamız gerektiğinden, yani yeniden yazma kilidi nesnemiz aynı belirteç tarafından
tekrar tekrar günlüğe kaydedilebilmelidir.
Bu yüzden sayacı artırın ve işimiz bitsin.
Yani bu iki numaralı vaka.
Yani basitçe, bu kural kilidi nesnesinin bu kod parçasını yürüten aynı iş parçacığı tarafından zaten
kaydedilmiş olup olmadığını kontrol ediyoruz, o zaman sadece sayaç değerini artırıyoruz ve işimiz bitiyor.
Mevcut konu başlığı hala bu kural tarafından korunan kritik bölüme girmiyor, değil mi?
Aşk nesnesi.
Ve sonra üç numaralı vaka geliyor.
Tamam, çocuklar, burada üç numaralı durumu gözden geçirmem gerekiyor, üç numaralı durum tamamen bir yeniden
yazma bloğu nesnesiyle ilgilidir ve başka herhangi bir eğilim tarafından zaten kaydedilmiştir, başka herhangi bir eğilim okunabilir veya üzerinde denenebilir.
Tam modaya uygun olabilir.
Tamam.
Ve elbette, bu rotada zaten bir kilit tutan denenmiş, doğru kilit nesnesi, sözleşme olan
bu kod parçasını çalıştıran denenmişten farklı olmalıdır, çünkü içinde bulunduğumuz
durum.
Bu kaya bloğu nesnesi üzerinde kilit tutan iş parçacığı ile mevcut denenen aynıdır, iki numaralı durumda
zaten ortaktır.
Dolayısıyla, üç numaralı duruma ulaştığınızda, bu basitçe Sağ Kilit Nesnesi okumanın
şu anda sistemdeki mevcut izden farklı herhangi bir iş parçacığına ait olduğu ve diğer iş parçacıklarının bir okuyucu iş parçacığı
veya bir yazar olabileceği anlamına gelir.
Her iki senaryoyu da ele almak zorundayız.
Bir deneyeyim.
Koşul bunu reddederse, bu kilit nesnesi sistemdeki başka bir iş parçacığı tarafından zaten kaydedilmiş
olur.
Yani durum çok basit, sadece mermi kanatlarının ne olduğunu kontrol etmeniz gerekiyor.
Tamam.
Şimdi biraz akıl sağlığı kontrolü yapmama izin verin.
Şimdi, aslında, bu kural dreadlock nesnesi bir okuyucu iş parçacığı tarafından günlüğe kaydedilirse.
Aksi takdirde bu tür koşulların yerine getirilmesi gerekir.
Bu Richard Wright kilit nesnesi tuzağa düşmüş bir yazar tarafından günlüğe kaydedilirse.
Açıkçası, bu değerin tam olarak bir olması gerekir, birden büyük olamaz, değil mi?
Ve deneme hakkının geçerli bir gerekçesi olmalıdır. D. sıfırdan ayrı.
Bu yüzden, geri çekme kilidi nesnesinin durumunun tutarlı olmasını sağlamak için başka bazı koşullarla
oynadım.
Bununla, eğer Glass.
Pekala, şimdi, yüz otuz üç numaralı çizgiye geldiğimde.
Bu basitçe, bu sağ kilit nesnesi üzerinde bir sağ kilit elde etmeye çalışan izlenen ve
mevcut bir üçüncüyü okumak veya yazmak için bir okuyucu tarafından kaydedileceği anlamına gelir.
Yani Lyneham'da, yüz otuz üç.
Ne yapmalıyım?
Bu da basitçe, sözleşmenin şu anda mevcut olmayan bir kilit elde etmeye çalıştığı anlamına gelir, bu
nedenle sözleşmemin engellenmesi gerektiği anlamına gelir.
O zaman sayacı artıralım.
Ve sadece deneme ve engelleme hakkınızı kullanın.
Ekilebilir olması şartıyla.
Tamam.
Ve sistemdeki bazı tehditler bu sağa sinyal gönderdiğinde, bu hayati tehdit
uyanacak şekilde üçlü, bu koşulda engelleyen gergedan tehditlerinin sayısını azaltabilir.
Tamam.
Ve elbette, sahte uyanmayı önlemek için bu if cümlesini beyaz cümleye değiştirmeniz gerekir.
Yani bu basitçe, doğru kilit nesnesinin okunduğu yüzde 100 garanti edildiğinde mevcut işleminizin 138 numaralı satıra ulaşacağı
anlamına gelir ve artık kilitleme için kullanılabilir.
Pekala, bu vahşi durum nedeniyle, yanlış olacağız.
Ve bu vahşi koşul yanlış olduğunda, 138 numaralı satırda kilidin kullanılabilir olduğu anlamına gelir.
Yani basitçe, şu anda çalışan tehdidin bu sağ kilit nesnesinin sahibi olduğunu yansıtacak şekilde sokak
sağ kilit nesnesinin durumunu güncellemem gerekiyor.
Ve bu rota sağ blok nesnesi rakip kabileler tarafından kaydedilir.
Ve burada bu API üzerindeki uygulamayı tamamladık, üç numaralı vakayı da ele aldık.
Tamam.
Kodun çoğunun aslında Assad kodu olduğunu ve bunların kaynak olarak yerleştirilmesinin çok önemli olduğunu
görebilirsiniz, böylece uygulamamızı test edeceğimiz zaman programımız bu sertifikaların hiçbirine çarpmamalıdır.
Eğer böyle yapıyorsa, uygulamamız hatalı demektir.
Böylece, yönlendirme kilidinin mevcut olduğu birinci durum, ikinci durum ve Yönlendirme Kilidi nesnesinin aynı yazar
iş parçacığı tarafından zaten kaydedilmiş olduğu ve şimdi tekrar kilidi ele geçirmeye çalıştığı üç durumu
da ele almış olduk.
Yani bu, yazılım agresifliği ve yeniden yazma kilidi nesnesi mevcut olmadığında üç numaralı durumdur.
Ve bu durumda, mevcut iş parçacığımız tıkanmalı ve yeniden deneme saati nesnesi kullanılabilir hale gelene kadar bloke
olmaya devam etmelidir.
Tamam.
Ve kırmızı kilit seçeneği kullanılabilir hale geldiğinde, bu kırmızı ışık kilidi nesnesinin sahipliğini
mevcut tehdidimize vermek bu kadar basittir.
Tamam.
Böylece, Sağ Kilit API'sinin uygulanmasını da tamamlamış olduk.
Ve şimdi bir sonraki seçimde, gerçekten, Unlock API'nin uygulanmasını tartışacağız.