WEBVTT

00:07.320 --> 00:11.850
Şimdi, gelecek hafta, bir oran kilitleme API'sinin uygulanmasını tartışacağız.

00:12.270 --> 00:12.660
Tamam.

00:13.200 --> 00:19.080
Dolayısıyla bu API'nin uygulanması, önceki ders videosunda tartıştığımız Read Lock API'sinin uygulanmasından

00:19.080 --> 00:21.150
çok farklı değildir.

00:21.960 --> 00:23.370
Yani başlamak için.

00:24.540 --> 00:30.030
Dolayısıyla, sistemdeki herhangi bir tehdit ve bu API'yi çağırdığında, bu doğru kilit nesnesi üzerinde

00:30.030 --> 00:37.230
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.

00:37.860 --> 00:38.250
Tamam.

00:39.660 --> 00:42.930
Bu yüzden tekrar başlamak için durum muteksini kilitleyeceğiz.

00:50.450 --> 00:56.330
Ve tüm mantığı kilitleme ve kilit açma arasında sandviç yapacaktık St. Mutex.

00:57.050 --> 00:59.940
Şimdi yine üç vakayı ele alacaktık.

00:59.960 --> 01:00.650
Birinci vaka.

01:02.510 --> 01:10.400
Richard Sağ Kilit Nesnesi kullanılabilir olduğunda.

01:19.750 --> 01:26.230
Bu kırmızı hak benzeri nesne bir hak tarafından kilitlendiğinde ve bu hayati iş parçacığı bu API'yi çağıran

01:26.230 --> 01:33.640
iş parçacığından farklı olmadığında, yani iş parçacığı aynı okuma hakkı kilidi nesnesi üzerindeki hak kilidini almaya

01:33.640 --> 01:38.860
çalıştığında ve bu nedenle tekrar kapsayıcılık özelliğini kapsar.

01:42.510 --> 01:52.920
Ve Gears üç, bir yeniden yazma aşk nesnesinin, mevcut orijinal konudan farklı olan bir yazar konusu tarafından

01:52.920 --> 01:55.590
sevildiğini söylüyor.

01:57.240 --> 01:57.630
Tamam.

01:58.260 --> 02:01.020
Bu yüzden bu üç vakayı teker teker ele alacaktık.

02:01.350 --> 02:03.810
Şimdi Vaka bir'in uygulanmasını tartışalım.

02:07.030 --> 02:12.310
Öyleyse tekrar, sağ dreadlock'un gerçekten mevcut olduğunu belirten if koşulunu yazalım.

02:18.440 --> 02:23.030
Biraz hızlı gideceğim çünkü artık bu durumun ne anlama geldiğini anladınız.

02:27.370 --> 02:29.200
Bu yüzden bazı alıntılar yapmama izin verin.

02:38.410 --> 02:45.130
Dolayısıyla bu forests koşulu, sağ okuma kilidi nesnemin durumunun bu if cümlesiyle tutarlı olmasını

02:45.130 --> 02:45.970
sağlar.

02:47.490 --> 02:54.030
Şimdi, basitçe, bu kırmızı kilit nesnesinin durumunu, bu kırmızı sağ kilit nesnesinin artık haklı

02:54.030 --> 02:58.410
bir tehdide ait olduğunu yansıtacak şekilde güncelleyeceğim.

03:10.540 --> 03:16.300
Ve seyahat hakkı ile, bu treni yakalamamıza izin veriyor mu? D. Bu doğru mu yoksa tehdit mi?

03:16.390 --> 03:19.270
Bunu bir API iş parçacığı self kullanarak yapabilirsiniz.

03:20.850 --> 03:21.960
Ve ben bittim.

03:25.400 --> 03:27.480
Yani Murdoch'ların kilidini aç ve.

03:29.870 --> 03:37.430
Dolayısıyla bu, burada bir numaralı durumu kapsar, bu kırmızı kilit nesnesinin durumunu, caddenin aşağısında

03:37.430 --> 03:44.570
sağ kilit nesnesinin bir basma hakkı tarafından sahiplenildiğini yansıtacak şekilde güncelledik.

03:46.690 --> 03:48.340
Şimdi iki numaralı vakaya geliyoruz.

03:50.410 --> 03:53.080
Yani iki numaralı vakanın uygulanması çok basittir.

03:54.010 --> 04:02.170
Öncelikle, okunan sağ kilit nesnesi bir sürücü tehdidi tarafından kaydedilmeli ve bu sağ kilit nesnesi

04:02.170 --> 04:10.030
üzerinde sahipliğe sahip olan Tread'in hakkı, şu anda bu sokak sağ kilit nesnesinin durumunu inceleyen

04:10.030 --> 04:15.100
mevcut iş parçacığı olarak bir tehdit olarak görülmelidir.

04:16.240 --> 04:16.630
Tamam.

04:22.620 --> 04:26.670
Açıkçası, analizin değeri her yerde olabilir.

04:26.970 --> 04:29.760
Herhangi bir pozitif tamsayı olabilir, bir olması gerekmez.

04:31.080 --> 04:39.180
Ve özyinelemeli olma özelliğini uygulamamız gerektiğinden, yani yeniden yazma kilidi nesnemiz aynı belirteç tarafından

04:39.180 --> 04:42.240
tekrar tekrar günlüğe kaydedilebilmelidir.

04:46.280 --> 04:50.000
Bu yüzden sayacı artırın ve işimiz bitsin.

04:54.530 --> 04:56.450
Yani bu iki numaralı vaka.

04:57.650 --> 05:04.010
Yani basitçe, bu kural kilidi nesnesinin bu kod parçasını yürüten aynı iş parçacığı tarafından zaten

05:04.010 --> 05:11.210
kaydedilmiş olup olmadığını kontrol ediyoruz, o zaman sadece sayaç değerini artırıyoruz ve işimiz bitiyor.

05:11.780 --> 05:16.880
Mevcut konu başlığı hala bu kural tarafından korunan kritik bölüme girmiyor, değil mi?

05:16.890 --> 05:17.660
Aşk nesnesi.

05:19.280 --> 05:21.200
Ve sonra üç numaralı vaka geliyor.

05:21.680 --> 05:29.580
Tamam, çocuklar, burada üç numaralı durumu gözden geçirmem gerekiyor, üç numaralı durum tamamen bir yeniden

05:29.580 --> 05:41.870
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.

05:41.900 --> 05:43.190
Tam modaya uygun olabilir.

05:44.680 --> 05:45.070
Tamam.

05:47.010 --> 05:53.460
Ve elbette, bu rotada zaten bir kilit tutan denenmiş, doğru kilit nesnesi, sözleşme olan

05:53.460 --> 05:59.670
bu kod parçasını çalıştıran denenmişten farklı olmalıdır, çünkü içinde bulunduğumuz

05:59.670 --> 06:00.630
durum.

06:01.990 --> 06:08.110
Bu kaya bloğu nesnesi üzerinde kilit tutan iş parçacığı ile mevcut denenen aynıdır, iki numaralı durumda

06:08.110 --> 06:09.400
zaten ortaktır.

06:10.120 --> 06:14.830
Dolayısıyla, üç numaralı duruma ulaştığınızda, bu basitçe Sağ Kilit Nesnesi okumanın

06:15.550 --> 06:22.390
ş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ığı

06:22.780 --> 06:25.370
veya bir yazar olabileceği anlamına gelir.

06:25.510 --> 06:27.220
Her iki senaryoyu da ele almak zorundayız.

06:28.090 --> 06:28.900
Bir deneyeyim.

06:28.900 --> 06:34.180
Koşul bunu reddederse, bu kilit nesnesi sistemdeki başka bir iş parçacığı tarafından zaten kaydedilmiş

06:34.180 --> 06:34.660
olur.

06:42.640 --> 06:46.600
Yani durum çok basit, sadece mermi kanatlarının ne olduğunu kontrol etmeniz gerekiyor.

06:47.890 --> 06:48.310
Tamam.

06:48.730 --> 06:51.700
Şimdi biraz akıl sağlığı kontrolü yapmama izin verin.

06:57.640 --> 07:01.840
Şimdi, aslında, bu kural dreadlock nesnesi bir okuyucu iş parçacığı tarafından günlüğe kaydedilirse.

07:12.570 --> 07:16.890
Aksi takdirde bu tür koşulların yerine getirilmesi gerekir.

07:23.120 --> 07:26.480
Bu Richard Wright kilit nesnesi tuzağa düşmüş bir yazar tarafından günlüğe kaydedilirse.

07:35.730 --> 07:41.580
Açıkçası, bu değerin tam olarak bir olması gerekir, birden büyük olamaz, değil mi?

07:48.190 --> 07:51.610
Ve deneme hakkının geçerli bir gerekçesi olmalıdır. D. sıfırdan ayrı.

07:52.450 --> 07:58.510
Bu yüzden, geri çekme kilidi nesnesinin durumunun tutarlı olmasını sağlamak için başka bazı koşullarla

07:58.510 --> 07:59.350
oynadım.

08:00.340 --> 08:02.110
Bununla, eğer Glass.

08:02.800 --> 08:09.230
Pekala, şimdi, yüz otuz üç numaralı çizgiye geldiğimde.

08:09.850 --> 08:14.950
Bu basitçe, bu sağ kilit nesnesi üzerinde bir sağ kilit elde etmeye çalışan izlenen ve

08:15.460 --> 08:21.550
mevcut bir üçüncüyü okumak veya yazmak için bir okuyucu tarafından kaydedileceği anlamına gelir.

08:24.340 --> 08:26.650
Yani Lyneham'da, yüz otuz üç.

08:27.310 --> 08:28.270
Ne yapmalıyım?

08:28.750 --> 08:35.920
Bu da basitçe, sözleşmenin şu anda mevcut olmayan bir kilit elde etmeye çalıştığı anlamına gelir, bu

08:35.920 --> 08:40.420
nedenle sözleşmemin engellenmesi gerektiği anlamına gelir.

08:48.040 --> 08:49.870
O zaman sayacı artıralım.

08:52.210 --> 08:56.770
Ve sadece deneme ve engelleme hakkınızı kullanın.

09:01.810 --> 09:02.980
Ekilebilir olması şartıyla.

09:08.690 --> 09:09.080
Tamam.

09:09.890 --> 09:17.690
Ve sistemdeki bazı tehditler bu sağa sinyal gönderdiğinde, bu hayati tehdit

09:17.690 --> 09:28.460
uyanacak şekilde üçlü, bu koşulda engelleyen gergedan tehditlerinin sayısını azaltabilir.

09:29.390 --> 09:29.780
Tamam.

09:30.410 --> 09:36.830
Ve elbette, sahte uyanmayı önlemek için bu if cümlesini beyaz cümleye değiştirmeniz gerekir.

09:40.950 --> 09:48.270
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ğı

09:48.270 --> 09:51.960
anlamına gelir ve artık kilitleme için kullanılabilir.

09:53.250 --> 09:57.060
Pekala, bu vahşi durum nedeniyle, yanlış olacağız.

09:57.540 --> 10:03.090
Ve bu vahşi koşul yanlış olduğunda, 138 numaralı satırda kilidin kullanılabilir olduğu anlamına gelir.

10:05.780 --> 10:13.610
Yani basitçe, şu anda çalışan tehdidin bu sağ kilit nesnesinin sahibi olduğunu yansıtacak şekilde sokak

10:13.670 --> 10:18.290
sağ kilit nesnesinin durumunu güncellemem gerekiyor.

10:18.740 --> 10:22.310
Ve bu rota sağ blok nesnesi rakip kabileler tarafından kaydedilir.

10:48.520 --> 10:55.810
Ve burada bu API üzerindeki uygulamayı tamamladık, üç numaralı vakayı da ele aldık.

10:57.140 --> 10:57.580
Tamam.

10:58.100 --> 11:04.370
Kodun çoğunun aslında Assad kodu olduğunu ve bunların kaynak olarak yerleştirilmesinin çok önemli olduğunu

11:04.370 --> 11:11.630
görebilirsiniz, böylece uygulamamızı test edeceğimiz zaman programımız bu sertifikaların hiçbirine çarpmamalıdır.

11:11.930 --> 11:15.680
Eğer böyle yapıyorsa, uygulamamız hatalı demektir.

11:16.550 --> 11:22.700
Böylece, yönlendirme kilidinin mevcut olduğu birinci durum, ikinci durum ve Yönlendirme Kilidi nesnesinin aynı yazar

11:22.700 --> 11:28.250
iş parçacığı tarafından zaten kaydedilmiş olduğu ve şimdi tekrar kilidi ele geçirmeye çalıştığı üç durumu

11:28.250 --> 11:29.450
da ele almış olduk.

11:30.170 --> 11:36.140
Yani bu, yazılım agresifliği ve yeniden yazma kilidi nesnesi mevcut olmadığında üç numaralı durumdur.

11:36.470 --> 11:44.360
Ve bu durumda, mevcut iş parçacığımız tıkanmalı ve yeniden deneme saati nesnesi kullanılabilir hale gelene kadar bloke

11:44.360 --> 11:46.160
olmaya devam etmelidir.

11:46.730 --> 11:47.150
Tamam.

11:48.320 --> 11:54.860
Ve kırmızı kilit seçeneği kullanılabilir hale geldiğinde, bu kırmızı ışık kilidi nesnesinin sahipliğini

11:54.860 --> 11:57.680
mevcut tehdidimize vermek bu kadar basittir.

11:58.730 --> 11:59.090
Tamam.

12:01.410 --> 12:05.760
Böylece, Sağ Kilit API'sinin uygulanmasını da tamamlamış olduk.

12:06.360 --> 12:11.400
Ve şimdi bir sonraki seçimde, gerçekten, Unlock API'nin uygulanmasını tartışacağız.
