WEBVTT

1
00:04.910 --> 00:12.170
Şimdi STP sürecimizde silme görevini

2
00:12.170 --> 00:13.160
erken silme gerçekleşmeyecek şekilde
uygulayalım.

3
00:13.760 --> 00:17.690
Bu yüzden iki senaryoyu ele alacağız.

4
00:17.690 --> 00:22.760
İlk senaryoda, yönlendirme tablosu
girdisinden başka bir

5
00:22.760 --> 00:23.300
şey olmayan tek bir nesneyi sileceğiz.

6
00:24.170 --> 00:28.670
Yani STP sürecinden silmemiz gereken
sadece tek bir nesne.

7
00:28.880 --> 00:36.410
İkinci senaryoda ise tüm yönlendirme
tablosunu silmek

8
00:36.410 --> 00:37.760
için nasıl eşzamansız kod yazacağımızı
uygulayacağız.

9
00:38.270 --> 00:40.790
İlk olarak dört numaralı seçeneğe gelelim.

10
00:43.640 --> 00:49.220
Tek bir yönlendirme tablosu girişinin
silinmesiyle

11
00:49.250 --> 00:50.180
ilgilenen dört numaralı seçeneği zaten
uyguladık.

12
00:50.570 --> 00:54.680
Şimdi tek yapmamız gereken erken silme
işleminin gerçekleşmemesine dikkat etmek.

13
00:55.700 --> 00:58.430
Bu yüzden sdp nokta c dosyasına gireceğim.

14
01:00.410 --> 01:04.640
Ve Sdpc'de burada işleyici için bir
seçenek numaramız var.

15
01:04.940 --> 01:06.770
Ve bunu görebilirsiniz.

16
01:07.330 --> 01:11.290
LCP yönlendirme tablosunu güncelle
işlevini çağırıyorum.

17
01:12.490 --> 01:13.240
Tamam.

18
01:13.450 --> 01:19.240
Bu yüzden yönlendirme tablosu girişini
silmek için ls tp update routing table
fonksiyonunu çağırıyorum.

19
01:19.240 --> 01:23.860
Ve bu işlev stp lc dosyasında
uygulanmaktadır.

20
01:24.660 --> 01:26.280
Bu fonksiyonu aramama izin verin.

21
01:26.280 --> 01:27.360
İşte burada.

22
01:27.960 --> 01:29.640
İşte bu fonksiyon.

23
01:30.470 --> 01:31.070
Tamam.

24
01:31.700 --> 01:38.330
Şimdi komut koduna bağlı olarak, bu komut
kodunun oluştur, güncelle veya sil
olabileceğini görebilirsiniz.

25
01:38.930 --> 01:45.860
Şimdi buraya, komut kodu yönlendirme
tablosu girişini silmek içinse bu işin
düşük

26
01:45.860 --> 01:50.870
öncelikli bir iş olarak oluşturulması
gerektiğine dair ek bir kod koymam
gerekiyor.

27
01:51.790 --> 01:55.510
Yapmanız gereken tek değişiklik bu,

28
01:59.370 --> 02:00.450
değil mi? Ve işimiz bitti.

29
02:01.150 --> 02:05.740
Dolayısıyla, komut kodu silme ise, düşük
öncelikli bir görev oluşturmanız gerekir.

30
02:05.770 --> 02:10.780
Aksi takdirde, her zamanki gibi orta
öncelikli bir görevden vazgeçebilirsiniz.

31
02:11.170 --> 02:16.360
Ve olay döngüsü iş parçacığı tarafından
çağrılacak olan geri arama işlevinde.

32
02:16.960 --> 02:23.170
Yönlendirme tablosu girişini yönlendirme
tablosundan silen bir fonksiyon zaten
yazmıştık.

33
02:23.350 --> 02:25.720
Ve tüm kaynakları serbest bırakıyoruz.

34
02:26.320 --> 02:26.950
Tamam.

35
02:27.250 --> 02:31.510
Yani sonuçta görev tamamlandığında IL
finish'e geri dönüyoruz.

36
02:32.640 --> 02:41.250
Böylece yönlendirme tablosu girdisini
silme işlemimiz, erken silme
gerçekleşmeyecek şekilde uygulanır.

37
02:41.550 --> 02:47.790
Yönlendirme tablosu girişinin silinmesi
söz konusu olduğunda görevi düşük

38
02:47.790 --> 02:50.160
öncelikli bir görev olarak zamanladığımız
için erken silme gerçekleşmeyecektir.

39
02:51.050 --> 02:53.960
Dolayısıyla bu hususlar zaten
uygulanmaktadır.

40
02:54.560 --> 02:59.570
Silinmesi gereken bir yönlendirme tablosu
girdisi verildiğinde, yönlendirme

41
02:59.570 --> 03:00.860
tablosu girdisine gelen herhangi bir
işaretçimiz olmamalıdır.

42
03:01.280 --> 03:06.830
Bir yönlendirme tablosu girdisini temsil
eden bir D nesnesini sildiğinizi
varsayalım.

43
03:07.340 --> 03:14.780
Bu veri nesnesi D'ye işaret eden gelen
işaretçileri kırana

44
03:14.780 --> 03:17.030
kadar bu veri yapısı D üzerinde free
çağrısı yapmamalısınız.

45
03:17.540 --> 03:26.360
Diyelim ki uygulamanızda başka p1, p2, p3
nesneleriniz var

46
03:26.360 --> 03:27.650
ve bu nesneler D veri nesnesine bir
işaretçi tutuyor.

47
03:29.400 --> 03:37.020
Dolayısıyla, bu işaretçileri kırmadan D
veri nesnesini serbest

48
03:38.190 --> 03:39.720
bırakırsanız, bu işaretçiler sarkan
işaretçiler haline gelecektir.

49
03:40.260 --> 03:44.310
Bu da uygulamanızın bellek durumunun
bozulacağı anlamına gelir.

50
03:44.880 --> 03:48.030
Yani bunun asenkron programlama ile hiçbir
ilgisi yoktur.

51
03:48.030 --> 03:53.580
D nesnesini silmeye karar verdiyseniz,
uygulamanızdaki başka herhangi bir

52
03:53.580 --> 03:57.390
veri nesnesinin silinen nesnenin
işaretçisini tutmaması gerektiğinden emin
olun.

53
03:58.170 --> 04:04.260
RSVP sürecinde bu geçerli değildir çünkü
P1, P2 veya P3'ü taklit

54
04:04.260 --> 04:07.860
eden herhangi bir veri nesnemiz yoktur,
ancak izlemeniz gereken kılavuz budur.

55
04:08.460 --> 04:11.820
Yönlendirme tablosu girişini konteyner
veri yapısından ayırın.

56
04:11.820 --> 04:12.000
İşte.

57
04:12.000 --> 04:14.370
Konteyner veri yapısı yönlendirme tablosu
anlamına gelir.

58
04:15.330 --> 04:21.150
Bu nedenle, yönlendirme tablosu ağaçları,
ikili arama ağaçları, grafikler, hash
haritaları, hash

59
04:21.180 --> 04:28.290
tabloları vb. gibi düğümlerin koleksiyonu
olan veri yapılarına konteyner veri
yapıları denir.

60
04:28.440 --> 04:33.720
Bir yönlendirme tablosu girdisini
sildiğiniz için, bu yönlendirme

61
04:33.720 --> 04:34.980
tablosu girdisini yönlendirme tablosundan
ayırmanız gerektiği açıktır.

62
04:35.850 --> 04:40.140
Yönlendirme tablomuz hiçbir şey değildir,
ancak çift bağlantılı bir listedir.

63
04:40.140 --> 04:47.790
Dolayısıyla, bu yönlendirme tablosu
girişini silmeye karar verdiyseniz, bu

64
04:47.790 --> 04:51.030
yönlendirme tablosu girişini bağlı
listenin geri kalanından ayırmanız
gerekir.

65
04:51.030 --> 04:57.090
Açıkçası, her zamanki gibi çift bağlı
listeden bir

66
04:57.090 --> 04:58.500
düğüm sildiğinizde yaptığınız gibi
işaretçileri ayarlamanız gerekir.

67
04:58.890 --> 05:04.890
Yani bir bakıma, bu veri yapısını D
yapmanız ve veri yapısını veya veri
nesnesini izole etmeniz gerekir.

68
05:06.620 --> 05:13.160
Şimdi, ikinci adımda, bu veri nesnesi
tarafından

69
05:13.160 --> 05:13.610
işgal edilen tüm kaynakları serbest
bırakmanız gerekir.

70
05:13.610 --> 05:13.940
D.

71
05:15.110 --> 05:21.800
Bizim durumumuzda, D nesnesi tarafından
tutulan tek kaynak zamanlayıcıya bir
işaretçiden başka bir şey değildir.

72
05:23.030 --> 05:29.240
Böylece kodda, yönlendirme tablosu
girişini silmeye karar verdiğimizde,
zamanlayıcısının çalışıp

73
05:29.240 --> 05:32.780
çalışmadığını kontrol ettiğimizi ve
çalışıyorsa zamanlayıcıyı iptal ettiğimizi
görebilirsiniz.

74
05:39.950 --> 05:44.450
Sanırım bu mantık r t nokta c dosyasında
uygulanıyor.

75
05:45.950 --> 05:50.030
Art table delete adında bir işleviniz var.

76
05:51.280 --> 05:59.620
R2 R2 girişini silin ve burada son
kullanma zamanlayıcısını

77
05:59.620 --> 06:00.880
kontrol ettiğinizi ve zamanlayıcıyı iptal
ettiğinizi veya sildiğinizi
görebilirsiniz.

78
06:00.880 --> 06:08.440
Yani temel olarak bu adım, silmekte
olduğunuz

79
06:08.440 --> 06:09.490
veri nesnesi tarafından kullanılan
kaynakları silmeye eşdeğerdir.

80
06:09.520 --> 06:11.350
Yine bu genel bir kılavuzdur.

81
06:11.350 --> 06:13.510
Asenkron programlama ile hiçbir ilgisi
yoktur.

82
06:14.980 --> 06:19.300
Ve son olarak veri nesnesini serbest
bırakır ve ilfenesh'i döndürürsünüz.

83
06:20.260 --> 06:20.680
Tamam.

84
06:20.680 --> 06:26.110
Sdpl dot c dosyasında zaten yaptığımız şey
budur.

85
06:26.930 --> 06:27.680
İşte.

86
06:27.680 --> 06:33.230
Komut koduna bağlı olarak, yönlendirme
tablosu girişini yönlendirme tablosundan
sileriz

87
06:33.230 --> 06:37.310
ve gerekli tüm belleği boşaltırız ve EOL
bitişini döndürürüz.

88
06:38.350 --> 06:43.210
Böylece dört numaralı seçeneğin
uygulanması tamamlanmış oldu.

89
06:43.930 --> 06:50.560
Ve artık yönlendirme tablosu girişinin
silinmesi erken silme sorunundan tamamen
arındırılmıştır.

90
06:51.190 --> 06:57.070
Şimdi bir sonraki ders videosunda tüm
konteyner

91
06:57.070 --> 06:58.960
veri yapısının silinmesini nasıl
uygulayacağımızı tartışalım.

92
06:59.260 --> 07:01.330
Bu durumda yönlendirme tablosu.


