WEBVTT

1
00:08.210 --> 00:15.260
Evet arkadaşlar, şimdi olay döngüsünün ana
mantığını uygulayacağız, olay döngüsünün

2
00:15.260 --> 00:21.950
iş parçacığı bu işlevi çalıştırır olay
döngüsü iş parçacığı ve

3
00:21.950 --> 00:22.400
olay döngüsü iş parçacığının sonsuz bir
döngüde çalıştığını zaten tartışmıştık.

4
00:22.850 --> 00:30.440
Olay döngüsü, görevi bir olay döngüsünün
sekizindeki görevden almaya ve bu görevi
dosyalamaya çalışır

5
00:30.920 --> 00:35.810
ve bir görev olduğu ve görev hazır olduğu
sürece bunu yapmaya devam eder.

6
00:36.500 --> 00:43.130
Ayrıca, bir olay döngüsünün görevinin iki
bağımsız tarafından

7
00:43.130 --> 00:43.830
işletilen bir veri yapısı olduğunu da
tartıştık.

8
00:44.330 --> 00:46.640
Uygulama iş parçacığı ve hatta döngü iş
parçacığı.

9
00:47.270 --> 00:52.670
Bunun tipik bir üretici tüketici sorunu
olduğunu ve uygulama iş parçacığının bir

10
00:52.670 --> 00:55.760
üretici, olay döngüsü iş parçacığının ise
bir tüketici olduğunu tartıştığımızı
hatırlayın.

11
00:56.660 --> 01:02.720
Uygulama iş parçacığı görevi üretir ve
olay döngüsünde koşuşturmak için işaret
verir, olay döngüsü iş

12
01:02.720 --> 01:07.970
parçacığı ise görevi görev sekizinden
kaldıran ve onlara ateş eden bir tüketici
iş parçacığıdır.

13
01:09.170 --> 01:15.560
Bu nedenle, Eddy'nin çift döngü
görevindeki NQ ve BQ işlemleri aslında
kritik

14
01:16.070 --> 01:21.050
bölümlerdir ve bu nedenle NQ darbe karşıtı
işlemler mutantları kilitleyerek
korunmalıdır.

15
01:21.860 --> 01:25.670
Pekala, şimdi bu işlev olay döngüsü iş
parçacığına geliyoruz.

16
01:25.760 --> 01:31.400
Düşen kısa ve çok fazla zamanı ve sonsuz
bir döngü

17
01:31.400 --> 01:33.410
içinde küçük bir iş parçacığı olan bu
işlevi uygulayacaktık.

18
01:34.160 --> 01:37.760
Yapacağımız şey mutantları kilitlemek
olacaktı.

19
01:38.150 --> 01:39.810
Sonra ilk olarak, görevden görev.

20
01:40.640 --> 01:45.350
Ve şimdi eğer görev bulunamazsa, o zaman
olay döngüsü tehdidimizi askıya alacaktık.

21
01:46.130 --> 01:49.910
Ancak görev oluşturulmuşsa, görevi
dosyalayın.

22
01:50.660 --> 01:51.080
Tamam.

23
01:51.410 --> 01:57.110
Ve mutantların kilidini açın ve bu beş
adımı sonsuza kadar yapmaya devam edin.

24
01:57.740 --> 01:58.990
Yani bu adımlar için değil.

25
01:59.000 --> 02:00.050
Bunlar beş adımdır.

26
02:00.470 --> 02:03.620
Bu yüzden bu beş adımı sonsuza kadar
tekrarlamaya devam edin.

27
02:05.050 --> 02:10.690
Bunu, tüm bu algoritmayı bir süre, bir
lukwago içinde kapsülleyerek zaten
başardık.

28
02:11.350 --> 02:11.770
Tamam.

29
02:12.460 --> 02:18.220
Dolayısıyla, bu mantığı uygulamak için,
koşullandırılabilirliği nasıl
kullanacağınızı

30
02:18.220 --> 02:19.690
ve yeni vergileri nasıl kullanacağınızı
anlamanız gerekir.

31
02:20.860 --> 02:26.350
Condition değişkeni iş parçacığını askıya
almak için kullanılırken, new tax bu

32
02:26.350 --> 02:29.800
görev üzerinde Daegu işlemini birbirini
dışlayan bir şekilde gerçekleştirmek için
kullanılacaktır.

33
02:32.060 --> 02:35.480
Şimdi bu işlevi iş parçacığında bile
uygulayalım.

34
02:40.190 --> 02:44.530
Hatırlayın, dysfunction'a aktarılan
argüman hiçbir şey değildi,

35
02:44.540 --> 02:45.560
ancak insan döngüsü nesnesinin kendisine
bir işaretçiydi.

36
02:53.600 --> 02:55.430
Ve bu sonsuz döngüdür.

37
02:56.840 --> 03:00.800
Bu yüzden yapacağımız ilk şey olay döngüsü
mutantlarını kilitlemektir.

38
03:08.020 --> 03:10.360
Şimdi görev kesiminden göreve uyar.

39
03:23.780 --> 03:28.100
Dolayısıyla, bu hayati döngüye yalnızca
görev görevde bulunmadığında gireceğiz.

40
03:28.670 --> 03:31.310
Ve eşcinsellere bakılması bile askıya
alınmalı.

41
03:35.950 --> 03:40.330
Yani bu, dosyanın en üstünde tanımladığım
bir Boolean değişkeni.

42
03:40.870 --> 03:46.900
Yani bu değişkenin amacı, tüm tartışma

43
03:46.900 --> 03:47.380
çıktılarının ekranda görüntülenmesini
isteyip istemediğimdir.

44
03:47.740 --> 03:54.730
Birlik kütüphanemin iyi çalıştığından,
hatasız olduğundan ve herhangi bir hata
ayıklama yazdırma

45
03:54.730 --> 04:01.360
uygulamasının ekrana bilgi yazdırmasını
istemediğimden emin olduğumda bunu yanlış
olarak ayarlayacağım.

46
04:07.850 --> 04:11.450
Yani burada boş bir görev olduğu
doğrulanmıştır.

47
04:18.060 --> 04:20.880
Ve burada bu bakışı bile askıya alacağım,
Trent.

48
04:21.420 --> 04:25.650
Dolayısıyla, olay denemesini askıya almak
için bir API iş parçacığını çağırmanız
gerekir.

49
04:29.360 --> 04:30.320
Şartlı bekleme.

50
04:35.440 --> 04:40.870
Koşul değişkenine giden noktanın yanı sıra
bir veya iki muteks noktasını da geçin.

51
04:42.100 --> 04:42.520
Tamam.

52
04:46.190 --> 04:55.790
Böylece 83 numaralı satırda, olay döngüsü
üçlüsünüz askıya alınır ve olay döngüsü
sırtınız 84

53
04:55.790 --> 05:02.900
numaralı satırı yalnızca sistem
sinyalindeki başka bir iş parçacığı olay
döngünüzü tuzağa düşürdüğünde tutacaktır.

54
05:04.040 --> 05:12.770
Dolayısıyla, olay döngüsü parçanız blok
durumundan uyandırıldığında, görevden yeni
bir

55
05:12.770 --> 05:17.410
görevi tekrar almak için bu 77 numaralı
satıra geri dönmelidir.

56
05:18.200 --> 05:23.030
Ve eğer görev bulunamazsa, o zaman yine
engellenir ve seksen üç numaralı satıra
geçilir.

57
05:24.380 --> 05:24.830
Tamam.

58
05:26.390 --> 05:35.540
Yani loop trad bile sinyal aldığında biz
buradayız.

59
05:37.840 --> 05:50.620
Sinyali aldıktan sonra geri dönün, yeni
görevi görevden alın, herhangi biri.

60
05:52.500 --> 05:53.280
Tekrar.

61
05:54.860 --> 06:07.040
Ve görevin bulunması durumunda bir silahı
engellemek mi yoksa görevi ateşlemek mi
istediğimize karar verin.

62
06:10.400 --> 06:13.010
Şimdi burada bulunmanın ne kadar önemli
olduğunu anlıyorsunuz.

63
06:15.940 --> 06:25.120
Her 10 hafta bile olsa, Toskana görevinden
yeni görev

64
06:25.120 --> 06:28.210
olarak geri dönmeli ve Tasker hala boşsa
tekrar engellenmelidir.

65
06:28.600 --> 06:39.010
Aksi takdirde döngüden çıkın, bu yüzden
burada 90

66
06:39.010 --> 06:45.580
numaralı sırada olacağız, hatta bakın, tan
uyandı ve

67
06:45.580 --> 06:45.730
insan döngü ipliği önünüzdeki görevden
görevle yüzleşmeyi başardı.

68
06:46.810 --> 06:52.390
Yani 90 numaralı satırda Luke Thread'in
bile ateşlenecek bir görevi var.

69
06:53.200 --> 07:04.510
Şimdi bu muteksin görevi tamamlandı, bu
yüzden bu muteksin kilidini

70
07:04.510 --> 07:10.090
açabiliriz çünkü şu anda yanımızda zaten
ateşlenmesi gereken bir

71
07:10.090 --> 07:10.270
görev var ve bu görev zaten görevdeki
görev oldu.

72
07:11.830 --> 07:12.010
Eğer.

73
07:16.240 --> 07:18.130
Ve şimdi görevi dosyalayacağız.

74
07:25.950 --> 07:32.070
Görev bu şekilde ateşlenir ve görev
ateşlendikten sonra görev belleğini
boşaltabiliriz.

75
07:35.730 --> 07:42.600
Pekala, tüm bunları while döngüsü içinde
yapıyoruz

76
07:42.600 --> 07:43.320
ve bu fonksiyonun uygulanmasıyla işimiz
bitti.

77
07:44.700 --> 07:45.570
Oldukça kolay.

78
07:45.720 --> 07:49.520
Yani bu kadarlık kısım kritik bölümdür.

79
07:50.730 --> 07:57.360
Satır 92, Satır 77'deki vurgulanan kod

80
07:57.370 --> 07:58.440
parçasında Eddie adlı görevi
değiştiriyoruz.

81
07:58.800 --> 08:05.640
Bu nedenle, bu kod parçası muteks
kilitleme ve kilit açma çağrıları arasına
sıkıştırılmıştır.

82
08:06.990 --> 08:09.900
Böylece olay döngüsü kütüphanemiz artık
bir şekil alıyor.

83
08:10.380 --> 08:16.050
Bir sonraki ders videosundan, uygulamanın
olay döngüsüne ateş etmek için yeni

84
08:16.050 --> 08:24.720
bir görevi nasıl işaret ettiğini
göreceğiz, yani bir sonraki dersten tast

85
08:24.720 --> 08:26.430
gönderimi hakkında göreceğiz ve bu işlevi
uygularken çocuklar, hatta döngü denendi.

86
08:26.430 --> 08:33.420
Olay döngüsünün o durumunu gerçekten
güncellemeyi unuttuk, bu yüzden Luke bile
iki durumda olabilir.

87
08:33.420 --> 08:33.990
İkisi de olur.

88
08:33.990 --> 08:35.580
Her ikisi de meşgul.

89
08:36.570 --> 08:36.960
Tamam.

90
08:37.350 --> 08:44.100
Öyleyse, bu işleve bir kod parçası
eklememiz gerektiğini düşünebilir misiniz,

91
08:44.100 --> 08:51.270
böylece olay döngüsünün durumu, olay
döngüsünün bloglanmış olmasına veya

92
08:51.270 --> 08:51.840
gerçekten bir görevi yürütmesine bağlı
olarak doğru şekilde güncellenir.

93
08:53.590 --> 09:01.000
Bu fonksiyonda Lou Pratt'in bile görevden
bir görev bulamadığı

94
09:01.000 --> 09:02.890
için 84 numaralı satırda bloke etmeye
karar verdiğini görebilirsiniz.

95
09:04.420 --> 09:04.850
Tamam.

96
09:04.870 --> 09:13.090
Yani bu basitçe, bloklamadan ve hatta
döngü takibinden hemen önce,

97
09:13.090 --> 09:15.070
olay döngüsünün boşta kalmaya çalıştığı
durumu güncellememiz gerektiği anlamına
gelir.

98
09:18.740 --> 09:25.160
Ve düşük gelgit bile bu while döngüsünden
çıktığında,

99
09:25.160 --> 09:26.420
olay döngümüz TED tetikleyecek bir görev
bulmuş demektir.

100
09:27.640 --> 09:34.960
Bu da 89 numaralı satırda Murdoch'ların
kilidini açmadan önce

101
09:34.960 --> 09:35.820
Lou adlı olayın durumunu güncellememiz
gerektiği anlamına geliyor.

102
09:39.340 --> 09:49.240
Çok meşgul çünkü bir sonraki adımda kuş

103
09:49.240 --> 09:50.080
gribimiz başvuru ile gönderilen bir görevi
ateşleyecekti.

104
09:51.650 --> 09:52.100
Tamam.

105
09:54.730 --> 10:01.270
Ve güncellemeyi unuttuğumuz bir şey daha
olay döngüsünün bu mevcut görev üyesiydi.

106
10:02.480 --> 10:06.920
Böylece 99 numaralı satırda Loop'un bile
bu görevle mücadele ettiğini
görebilirsiniz.

107
10:07.460 --> 10:14.270
Böylece 99 numaralı satırdan hemen önce,
olay döngüsünün geçerli oyuncu üyesini
güncelleyebilirsiniz.

108
10:15.590 --> 10:21.710
Ve olay döngüsü görevle mücadele etmeyi
bitirdiğinde, geçerli

109
10:21.920 --> 10:22.310
geçiş noktasını veya şu ana kadar
güncelleyebilirsiniz.

110
10:23.960 --> 10:24.380
Tamam.


