WEBVTT

00:06.950 --> 00:13.320
Sol tarafta, mutex'in bir kaynak dosyası olduğunu görmek için bir süre okudum ve sağ

00:13.320 --> 00:19.440
tarafta önceki ders videosunda uyguladığımız aynı yüksek profile sahibiz.

00:20.220 --> 00:26.580
Şimdi kaynak dosyada, muteks ile ilgili ilk API'yi zaten uyguladım çünkü

00:26.580 --> 00:27.570
çok basit.

00:28.050 --> 00:33.000
Tek yapmanız gereken özyinelemeli yansıtılmış harici yapıların tüm durum değişkenlerini başlatmaktır,

00:33.000 --> 00:34.110
bu kadar basit.

00:35.310 --> 00:40.080
Bu yüzden tartışmamıza ikinci API özyinelemeli muteks kilidi uygulaması ile başlayacağız.

00:40.890 --> 00:41.250
Tamam.

00:42.260 --> 00:47.660
Her şeyden önce, bu geri çağırma Cimarex Lock API'sini uygulamak için algoritmanın ne olması

00:47.660 --> 00:55.490
gerektiğini daha yüksek bir seviyede tartışalım, bu yüzden neden uygulamanızda yürüyüşler ve API özyinelemeli muteks, özyinelemeli

00:56.210 --> 00:59.620
muteks üzerinde kilitleme, yapı veya nesne değil.

01:00.350 --> 01:07.670
Aşağıdaki üç vaka ortaya çıkar Bunu kimse görmüyor.

01:07.790 --> 01:12.860
Bu özel özyinelemeli muteks nesnesi zaten kaydedilmemiştir.

01:14.240 --> 01:21.800
Bu API'yi çağıran üçlünün bu kilide erişim izni verilmesi gereken kişi olduğu anlamına gelir.

01:23.460 --> 01:23.880
Tamam.

01:24.630 --> 01:26.310
İkincisi, şu davalar.

01:29.360 --> 01:36.200
Tehdit bu API kayıtları mutex lakh'ı içerdiğinde, bu belirli özyinelemeli mutex nesnesinin olması

01:36.210 --> 01:37.670
mümkün olabilir.

01:38.950 --> 01:42.550
Bu konu başlığının kendisi tarafından zaten kaydedilmiştir.

01:44.290 --> 01:51.430
Yani bir Ruger rex şimdiden kendini sevdirdi.

01:53.020 --> 01:54.430
Bu iki numaralı dava.

01:55.600 --> 02:07.000
Ve son olarak, üç numaralı durum, bu belirli özyinelemeli muteks nesnesi kaydedildiğinde, ancak bu özyinelemeli muteks kilit API'sini çağıran

02:07.210 --> 02:16.180
bu belirli Karen kabilesi tarafından değil, başka bir iş parçacığı tarafından kaydedildiğini söylüyor.

02:17.380 --> 02:19.870
Sistemde çok sayıda iplik olabilir, değil mi?

02:23.460 --> 02:24.830
Başka bir kabile tarafından.

02:28.740 --> 02:35.520
Dolayısıyla, bu API'yi tamamen uygulamak için bu üç durumu da kapsamamız gerekiyor, bu yüzden uygulamaya bir numaralı

02:35.520 --> 02:37.320
durumla başlayalım.

02:39.660 --> 02:46.530
Yani birinci durum, bu özyinelemeli Mutaz nesnesi zaten mevcut olduğuna dair kaydedilmediğinde, serbesttir.

02:46.980 --> 02:53.340
Bu yüzden öncelikle, bu özel özyinelemeli mutaz nesnesinin ilk etapta günlüğe kaydedilmediğini açıklığa kavuşturan

02:53.340 --> 02:55.650
bir if koşulu yazmamız gerekir.

02:56.280 --> 03:04.530
Ancak bu özyinelemeli muteks nesnesinin durumunu incelediğimiz için, bu özyinelemeli muteks nesnesi üzerinde her türlü

03:04.530 --> 03:09.000
incelemeyi birbirini dışlayan şekilde yapmamız gerekir.

03:09.630 --> 03:17.790
Bu yüzden yapacağım ilk şey muteksi günlüğe kaydetmek olacaktı.

03:28.310 --> 03:36.080
Şu anda hepsi doğru olan bu ifade, bana bu belirli kozmetik nesnesinin zaten kaydedilip kaydedilmediğini

03:36.080 --> 03:38.540
söyleyen if koşulunu yazardım.

03:39.620 --> 03:42.080
Rick ya da Cimarex itiraz ederse?

03:44.060 --> 03:44.840
Ve sen.

03:45.950 --> 03:47.670
Sıfıra eşittir.

03:47.690 --> 03:52.520
Bu, söz konusu özyinelemeli muteks nesnesinin serbest olduğu ve kullanılabilir olduğu anlamına gelir.

03:54.410 --> 04:03.140
Bu durumda, bu belirli API'yi yürüten üçlü olan mevcut yürütme üçlüsüne bu özyinelemeli muteks nesnesi

04:03.710 --> 04:07.190
üzerinde bir kilit verilmelidir.

04:08.250 --> 04:14.280
Öyleyse, standart değişken alt bölgeleri ve mutex nesnesini, bu pervasız ve sessiz x nesnesi

04:14.280 --> 04:21.780
üzerinde genellikle bir kilit ve kilitleme iş parçacığı olan aynı sayıda yansıtacak şekilde güncelleyelim.

04:24.230 --> 04:28.330
Bu özel mantığı yürüten mevcut eğilim olacaktır.

04:31.210 --> 04:32.320
Ve işimiz bitti.

04:33.550 --> 04:36.280
Bu yüzden basitçe durum muteksinin kilidini açın.

04:38.610 --> 04:39.720
Ve devam et.

04:43.110 --> 04:45.870
Yani bu bir numaralı vakayı kapsıyor.

04:46.830 --> 04:53.970
Ve şimdi tüm bu uygulamalarda, programa bazı özler koyacağımı unutmayın, böylece kodumuzda

04:54.570 --> 04:59.790
bir hata olduğu anda programımız hemen çökecektir.

05:01.500 --> 05:08.820
Burada bir tahmin koyduğumu görebilirsiniz çünkü bu muteks nesnesi herhangi bir iş parçacığı tarafından günlüğe kaydedilmediyse, kilitleme

05:08.820 --> 05:12.270
iş parçacığının null olması gerektiği anlamına gelir.

05:12.750 --> 05:20.010
Dolayısıyla, programınız bu saldırıda çökerse, özyinelemeli muteks nesneniz bir hata nedeniyle tutarsız

05:20.010 --> 05:22.110
bir duruma girmiş demektir.

05:23.490 --> 05:31.560
Bu nedenle mümkün olduğunca çok kaynak eklemekten çekinmeyin, böylece bir hata ortaya çıktığında bunu mümkün olan en kısa sürede yakalayabiliriz.

05:32.920 --> 05:40.420
Ardından ikinci duruma, yani bu belirli özyinelemeli muteks nesnesinin mevcut tehdidin kendisi tarafından günlüğe kaydedildiği

05:40.420 --> 05:41.620
duruma geliriz.

05:42.160 --> 05:46.510
Peki özyinelemeli sessize alma işlemi gerçekleşirse durum ne olur?

05:49.790 --> 05:52.520
Kilitleme tesisi tehdit türüne eşittir.

05:57.000 --> 05:59.220
O zaman bu durumda ne yapmanız gerekiyor?

05:59.940 --> 06:06.470
Basitçe, bu belirli iş parçacığının bir sonraki nesne üzerinde zaten almış olduğu günlük sayısını artırmanız ve yapılacak

06:06.660 --> 06:09.810
başka bir şey olmadığını iade etmeniz gerekir.

06:11.010 --> 06:19.740
Bu yüzden buraya bir alıntı koyacağım çünkü bu ve değeri burada sıfır olamaz ve yeni vergi durumunun kilidini

06:21.360 --> 06:30.000
açmak için bu özyinelemeli mutex nesnesinde elde edilen mevcut günlük sayısını basitçe artıracağım.

06:30.000 --> 06:36.150
Çünkü bu isteğin durum değişkenini, Murdochs nesnesini güncellemeyi tamamladık ve orada işimiz

06:36.150 --> 06:37.390
bitti, bitti.

06:38.460 --> 06:40.530
Böylece iki numaralı vakayı da ele almış olduk.

06:43.680 --> 06:50.010
Ve şimdi üç numaralı duruma geliyoruz, yani bu mevcut glukozamin ördek nesnesi başka bir yol tarafından

06:50.010 --> 06:53.700
yerleştirildiğinde, eğer koşul kayıtlar, bazı muteks kilidi

06:57.510 --> 07:00.390
ve iş parçacığı bilinmiyorsa olacaktır.

07:04.210 --> 07:11.350
Ve muteks kilitleme iş parçacığı I. D. mevcut yürütme tehdidine eşit değildir.

07:12.190 --> 07:17.980
Yani bu, bazı kabileler tarafından günlüğe kaydedilen bazı yeni vergiler gerektirdiği anlamına

07:17.980 --> 07:25.570
gelir, böylece birçoğunun söylediği şey, bir kabile başka bir üçlü tarafından zaten günlüğe kaydedilmiş olan özyinelemeli

07:25.570 --> 07:35.830
muteks nesnesi üzerinde bir kilit elde etmeye çalıştığında, o zaman mevcut kabilem engellenmelidir, bu yüzden iş parçacığımı basitçe engelleyeceğim.

07:36.490 --> 07:41.170
Bu yüzden öncelikle, bu tekrarlayan yeni vergi için engellenen tuzakların sayısını belirten

07:41.170 --> 07:42.520
sayaçları artıracağım.

07:43.360 --> 07:49.030
Ve sonra tehdit koşulunu çağıracağım.

07:49.030 --> 07:58.750
Bekleyin ki yeni vergim bu koşul değişkeninde bloke edilsin.

08:05.410 --> 08:05.830
Tamam.

08:08.400 --> 08:13.770
Dolayısıyla 42 numaralı satırda, bir tür tüketici vergisi nesnesi üzerinde kilit elde etmeye çalışan mevcut

08:13.770 --> 08:15.600
eğilimim engellenecektir.

08:16.380 --> 08:21.090
Bunun nedeni de, bu kozmetik nesnenin sistemdeki bazı ticaret tarafından zaten kaydedilmiş olmasıdır.

08:22.290 --> 08:29.340
Ve 43 numaralı satırı çalıştıracağım, bu özel koşul değişkeni başka bir tehdit tarafından bir sinyal

08:29.340 --> 08:30.420
alacaktır.

08:31.800 --> 08:32.190
Tamam.

08:32.760 --> 08:38.520
Yani bu durum değişken üzerine bloglanmış olan kabilemden birinin uyanacağı anlamına geliyor.

08:39.120 --> 08:46.800
Her şeyden önce, bu koşul değişkeninde oturum açtığım zamanların sayısını ayırt etmem gerekiyor çünkü

08:46.800 --> 08:51.300
zamanlardan biri artık engellenen adımdan uyandı.

08:52.650 --> 09:02.640
Ve bu sefer geri dönmeli ve bu belirli özyinelemeli muteks nesnesinin hala bazı iş parçacıkları tarafından kaydedilip kaydedilmediğini

09:02.640 --> 09:05.490
tekrar test etmelidir.

09:06.150 --> 09:08.970
Bunun için, eğer'i vahşi ile değiştirmeniz gerekir.

09:09.090 --> 09:10.980
Bu kavramı zaten biliyoruz, değil mi?

09:11.580 --> 09:14.100
Bu, sahte özetleri önlemek için yapılır.

09:15.610 --> 09:23.560
Dolayısıyla, bu belirli özyinelemeli muteks nesnesi sistemdeki herhangi bir tehdit tarafından kaydedilmediğinde, kontrol faturası

09:23.560 --> 09:25.480
46 numaralı satırı okur.

09:26.080 --> 09:33.160
Bu, şu anda bu işlevi yürüten iş parçacığıma bu özyinelemeli Murdoch nesnesi üzerinde bir kilit verilmesi gerektiği

09:33.160 --> 09:34.510
anlamına gelir.

09:35.380 --> 09:42.820
Dolayısıyla kontrol, yalnızca bu özyinelemeli muteks nesnesi artık mevcut iş parçacığımız tarafından günlüğe kaydedilebildiğinde 46 numarayı

09:42.820 --> 09:44.080
bırakacaktır.

09:45.240 --> 09:47.520
Bu yüzden buraya bazı alıntılar koymama izin verin.

09:54.380 --> 09:56.150
rand değeri sıfır olmalıdır.

10:02.630 --> 10:04.430
Engelleme trafiği boş olmalıdır.

10:04.970 --> 10:09.600
Ve şimdi mevcut trafiğe mutex nesnesinde bu istek üzerinde bir kilit verilmelidir.

10:09.800 --> 10:13.340
Bu geri çağırma Cimarex'inin durum değişkenini buna göre güncelleyin.

10:39.340 --> 10:43.000
Ve bu API'nin uygulanması ile işimiz bitti.

10:44.080 --> 10:44.530
Tamam.

10:44.890 --> 10:50.950
Bu yüzden bu API'nin her bir satırını ve neden bu üç durumu da kapsamamız gerektiğini açıklayacağım.

10:51.760 --> 10:58.660
Sonunda, işin zor kısmı bu geniş döngüdür, eğer sahte uyanmanın ne olduğunu ve neden if yerine while'a

10:58.660 --> 11:05.650
ihtiyacımız olduğunu bilmiyorsanız, muhtemelen sahte uyanma kavramını ele almanız gerekir.

11:06.340 --> 11:09.160
Bu konuyu daha önceki bölümlerde ele almıştım.

11:10.540 --> 11:15.550
Böylece mevcut yürütme üçlüsü koşul değişkeni üzerinde engellenmiş olarak kalacaktır.

11:16.620 --> 11:25.140
Bu özyinelemeli muteks nesnesi mevcut iş parçacığımız tarafından günlüğe kaydedilebilecek hale gelene kadar, bu kadar basit.

11:27.120 --> 11:31.920
Şimdi bir sonraki derste, videoda, Kilit Açma API'sinin uygulanmasını

11:32.370 --> 11:38.280
tartışacağız, ancak sizden ricam bu API'yi kendi başınıza uygulamaya çalışmanızdır.

11:39.400 --> 11:45.190
Yine, Kilit Açma API'sinde de aynı durum bir, durum iki ve durum üçü kapsamalıdır.
