WEBVTT

1
00:07.490 --> 00:12.050
Evet, çocuklar, şimdi şu ana kadar ne
yaptığımızı anlamaya çalışalım.

2
00:12.890 --> 00:18.830
Böylece bir ağ tarafından öğrenilen
yönlendirme tablosundaki her bir girdiye
bir zamanlayıcı bağladık.

3
00:19.310 --> 00:20.000
Tamam.

4
00:20.220 --> 00:21.380
Ve.

5
00:22.260 --> 00:24.210
Her yönlendirme tablosu için zamanlayıcı.

6
00:24.210 --> 00:29.730
Entry ayrı bir iş parçacığı bağlamında
çalışır, bu nedenle basitçe şu anlama
gelir.

7
00:30.390 --> 00:35.400
Yönlendirme tablonuzun rotaların bağlantı
listesinden başka bir şey olmadığını
varsayalım.

8
00:37.270 --> 00:38.350
Yönlendirme tablosu girişlerimiz.

9
00:38.350 --> 00:46.690
Ve yönlendirme tablonuzda dört rotanız
olduğunu varsayalım Rota

10
00:46.690 --> 00:49.000
bir, rota iki, Rota üç ve Rota dört.

11
00:49.180 --> 00:55.120
Şimdi, zamanlayıcıların kullanılmaya
başlanmasıyla birlikte, bu yönlendirme
tablosundaki her bir yönlendirme tablosu

12
00:55.150 --> 00:56.770
girişinin Zamanlayıcı İş Parçacığı adı
verilen ayrı bir iş parçacığı vardır.

13
00:56.780 --> 00:59.470
Diyelim ki bu bir zamanlayıcı ipliği T
bir.

14
00:59.500 --> 01:04.060
Bu yönlendirme tablosu girdisi, T iki
zamanlayıcı iş parçacığı olan kendi iş
parçacığına sahip olacaktır.

15
01:04.090 --> 01:09.940
Bu yönlendirme tablosu girdisi ayrıca
zamanlayıcı iş parçacığı, T üç ve benzeri
olan kendi iş parçacığına sahip olacaktır.

16
01:10.840 --> 01:13.720
Ve bu zamanlayıcı ipliklerinin her biri
çalışıyor.

17
01:14.320 --> 01:22.060
Ya da bu zamanlayıcı iş parçacıklarının
her birinin aslında 30 saniye boyunca
engellendiğini ve 30 saniye

18
01:22.060 --> 01:27.400
geçer geçmez, bu zamanlayıcı iş
parçacıklarının her birinin bu belirli
geri arama işlevini çalıştıracağını
söyleyebilirsiniz.

19
01:28.190 --> 01:28.760
Tamam.

20
01:28.760 --> 01:38.120
Bunun sonucunda her bir T1, T2, T3 ve T4
iş

21
01:38.120 --> 01:41.150
parçacığı kendi yönlendirme tablosundan
kendi girişini bağımsız olarak silmeye
çalışacaktır.

22
01:41.270 --> 01:49.070
Bu, tüm yönlendirme tablosunun aynı anda
dört zamanlayıcı iş parçacığı tarafından
işletildiği anlamına gelir.

23
01:51.090 --> 01:54.300
İşte bu yüzden eşzamanlılığı getirdik.

24
01:55.130 --> 01:55.730
Tamam.

25
01:56.060 --> 02:03.920
Bu nedenle, programınız çökerse veya
programınızın

26
02:03.920 --> 02:04.850
yürütülmesinden beklenmedik bir sonuç
görürseniz şaşırmayın.

27
02:05.930 --> 02:10.910
Çünkü bu noktada programımız çok iş
parçacıklı hale gelmiştir.

28
02:10.910 --> 02:15.050
Ve sadece bu da değil, iplik güvensizdir.

29
02:15.080 --> 02:23.210
Bu yönlendirme tablosunda kilit veya
muteks korumamız yok, ancak birden fazla

30
02:23.210 --> 02:26.330
zamanlayıcı iş parçacığı tarafından
çalıştırılıyor, bu nedenle her şey ters
gidebilir.

31
02:26.720 --> 02:31.610
Projemizin adının STP, yani tek iş
parçacıklı süreç olduğunu hatırlayın.

32
02:31.610 --> 02:34.370
Bu da kısıtlamayı ihlal ettiğimiz anlamına
gelir.

33
02:34.400 --> 02:39.890
Programımız, STP veya uygulamamız
mantıksal olarak artık tek iş parçacıklı
bir uygulama değildir.

34
02:39.890 --> 02:46.760
Şimdi çok iş parçacıklı hale geldi, bu
yüzden

35
02:46.760 --> 02:48.620
şimdi dinleyici iş parçacıklarına
uyguladığımız çözümün aynısını
uygulayacağız.

36
02:48.650 --> 02:51.620
Şimdi aynı çözümü zamanlayıcı iş
parçacıklarına uygulayacağız.

37
02:51.950 --> 02:59.490
Dolayısıyla sorunun özü, her bir
zamanlayıcı iş parçacığının kendi
zamanlayıcı iş parçacığı

38
02:59.490 --> 03:05.400
bağlamında yönlendirme tablosundan
yönlendirme tablosu girişini silmeye
çalışan bu işlevi çağırmasıdır.

39
03:06.300 --> 03:06.870
Tamam.

40
03:06.870 --> 03:13.350
Yani bu, bu işlevin güvenli olmayan bir
şekilde birden fazla iş

41
03:13.350 --> 03:14.790
parçacığı tarafından çağrıldığı anlamına
gelir ve bu nedenle eşzamanlılığımız
vardır.

42
03:15.510 --> 03:21.270
Yani sadece bir satır kod değişikliği
yaparak bu sorunu çözebiliriz.

43
03:21.510 --> 03:26.610
Zamanlayıcıların devreye girmesi nedeniyle
artık çok iş parçacıklı hale gelen STP
sürecimiz.

44
03:27.850 --> 03:34.090
Tekrar azaltılabilir veya tekrar mantıksal
olarak tek iş parçacıklı süreç haline
gelmek için tekrar onarılabilir.

45
03:34.570 --> 03:41.110
Yani yapacağımız şey, bu zamanlayıcı iş
parçacıklarının her biri

46
03:41.110 --> 03:47.320
ateşlendiğinde, yönlendirme tablosu
girişini kendileri silmek yerine,
yönlendirme tablosu

47
03:47.350 --> 03:49.780
girişinin silinme işlemini olay döngüsü iş
parçacığına devretmek olacaktır.

48
03:50.440 --> 03:58.180
Dolayısıyla, bu iş parçacıklarının her
biri tarafından yapılacak iş miktarını
kabul edecek

49
03:58.180 --> 04:03.640
olan olay döngüsü iş parçacığıdır ve daha
sonra olay döngüsü iş

50
04:03.640 --> 04:04.570
parçacıkları bu yönlendirme tablosu
girişlerinin her birinin silinmesini tek
tek işleyecektir.

51
04:04.930 --> 04:10.570
Bu da STP sürecinizin artık mantıksal
olarak tek iş parçacıklı hale geldiği
anlamına gelir.

52
04:10.570 --> 04:17.110
Yine, bu girdilerin her birinin
yönlendirme tablosundan silinmesi artık
zamanlayıcı

53
04:17.110 --> 04:20.370
iş parçacıkları yerine olay döngüsü iş
parçacığı tarafından yapılacaktır.

54
04:20.380 --> 04:26.860
Dolayısıyla, bu zamanlayıcı iş
parçacıklarının her biri silme işlemini

55
04:26.860 --> 04:29.930
kendi başlarına gerçekleştirmek yerine
olay döngüsü iş parçacığına devredecektir.

56
04:30.230 --> 04:32.930
Bu yüzden uygulamamız gereken kod
değişiklikleri var.

57
04:32.930 --> 04:35.540
Bu çözüm sadece bir satır koddan
ibarettir.

58
04:36.380 --> 04:47.420
Bu yüzden yapacağım şey, bu çağrıyı
kaldırmak ve zamanlayıcının süresinin
dolmasına izin vermek olacak.

59
04:47.420 --> 04:50.030
İşte o zaman zamanlayıcı iş parçacığı
ateşlenir.

60
04:50.480 --> 04:59.450
Hesaplamayı olay döngüsü iş parçacığına
devretmelerine ve zamanlayıcı iş

61
04:59.450 --> 05:01.200
parçacığının uygulamanın hesaplamasını
kendi başına yapmamasına izin verin.

62
05:01.220 --> 05:07.880
Aksi takdirde eşzamanlılık ortaya
çıkacaktır ve bu da sorunumuzun çözümüdür.

63
05:10.630 --> 05:11.020
Tamam.

64
05:11.020 --> 05:13.390
Yani bu dosyada hash include yapmanız
gerekir.

65
05:15.460 --> 05:17.440
STP dot h başlık dosyası.

66
05:17.770 --> 05:21.970
Şimdi, bu programı derleyip tekrar
çalıştırırsanız, aynı sonucu göreceksiniz.

67
05:21.970 --> 05:27.010
Yani, tüm yönlendirme tablosu girdileri
ilgili zamanlayıcılarının sona ermesi
üzerine silinecektir.

68
05:27.280 --> 05:32.410
Ancak dahili olarak yönlendirme tablosu
girdilerinin silinmesinin artık

69
05:32.410 --> 05:33.250
olay döngüsü iş parçacığı tarafından
yapıldığını biliyoruz.

70
05:33.790 --> 05:38.740
Tüm ilgili zamanlayıcı iş parçacıkları
hesaplamalarını olay döngüsü iş
parçacığına devretmiştir.

71
05:39.070 --> 05:39.610
Tamam.

72
05:39.610 --> 05:48.280
Yani bu, işleminizin temel uygulama
mantığının tek bir iş parçacığı tarafından

73
05:48.280 --> 05:50.230
yürütüldüğü anlamına gelir ve bu da olay
döngüsü iş parçacığıdır.

74
05:50.260 --> 05:51.760
Ve tebrikler.

75
05:51.760 --> 05:57.100
STP süreciniz mantıksal olarak hala tek iş
parçacıklı bir süreçtir.


