WEBVTT

1
00:05.410 --> 00:10.960
Evet arkadaşlar, şimdi bu dersten itibaren
olay döngüsü mini kütüphanemizin
uygulamasına başlayacağız.

2
00:11.650 --> 00:16.390
Başlangıç olarak, öncelikle GitHub'dan
kaynak kodunu

3
00:16.390 --> 00:22.540
indireceğim, bu yüzden klonlama komutunu
kullanacağım.

4
00:26.480 --> 00:33.320
Burada kendi kullanıcı adınızı, kendi
GitHub kullanıcı adınızı yazmanız

5
00:33.320 --> 00:36.860
gerekiyor, burada benimkini yazacağım ve
deponun adı US programming.

6
00:39.390 --> 00:39.810
Tamam.

7
00:41.490 --> 00:43.950
Böylece bu özel dizini oluşturacaktır.

8
00:45.310 --> 00:47.100
Şimdi bu dizinin içine girin.

9
00:49.120 --> 00:56.380
Şu anda, bu dizin neredeyse boş ve bu
söylemi geliştirdikçe, bu

10
00:56.380 --> 01:01.060
dizin içinde sadece bu bölümde yer alan
kaynak dosyası oluşturacağım.

11
01:01.600 --> 01:04.360
Ancak bir öğrenci olarak, kendi kodunuzu
yazacağınız için.

12
01:05.200 --> 01:10.960
Bu yüzden tüm geliştirme dosyalarınızı bu
geliştirme dizini içine yazmanızı tavsiye
ederim.

13
01:11.560 --> 01:15.430
Böylece bu dizin sizin için boş
kalacaktır.

14
01:16.240 --> 01:21.910
Ve geliştirme dizini dışında, bu kursun

15
01:21.910 --> 01:22.630
geliştirilmesi sırasında tüm kaynak
kodlarını yazacaktım.

16
01:23.350 --> 01:27.700
Bu kursun geliştirilmesi sırasında tüm
proje dosyalarını oluşturacağım.

17
01:28.420 --> 01:28.840
Tamam.

18
01:30.470 --> 01:33.590
Bu yüzden tüm geliştirmeleri Dove
dizininde yapmanız gerekir.

19
01:35.390 --> 01:39.830
Bitmiş projenin tamamı ise bu marka
dizininde yer alacaktır.

20
01:41.520 --> 01:49.980
Başlangıç olarak, yapıştırmak için yüksek
profilli bir

21
01:50.730 --> 01:51.180
altın hatta tutkal mı oluşturacağız?
Tamamdır.

22
01:52.140 --> 01:54.270
Yani bu benim yarattığım bir had a.

23
01:54.960 --> 02:01.020
Ve tüm veri yapılarını tanımlayacak ve

24
02:01.020 --> 02:02.970
olay döngüsü kütüphanemiz için bir arayüz

25
02:03.300 --> 02:03.810
görevi görecek API'leri bildirecek miyiz?
Pekâlâ.

26
02:04.950 --> 02:07.910
Çocuklar, şu anda son etkinlik
döngüsündeyim.

27
02:08.550 --> 02:12.870
Şimdi olay döngüsü ile çalışmak için
yapılarımızda bunu bildirmeye veya
tanımlamaya başlayacağız.

28
02:14.100 --> 02:19.410
Başlangıç olarak, öncelikle hesaplamanın
tam olarak ne olduğunu tanımlayalım.

29
02:20.370 --> 02:25.740
Bu slaytı tartıştığımızda, size
hesaplamanın hiçbir şey olmadığını, ancak
bir

30
02:25.740 --> 02:29.130
fonksiyon ve fonksiyonun argümanı
olduğunu, hesaplamanın da bu olduğunu
söylemiştim.

31
02:30.330 --> 02:30.690
Tamam mı? Uygulamalar olay gribi görev
alanına

32
02:32.040 --> 02:39.300
bir görev gönderir, böylece Lup bile
görevi

33
02:39.390 --> 02:40.380
daha sonra bir tür zamanda dosyalayabilir.

34
02:42.150 --> 02:46.050
Bu yüzden bir görevi temsil eden bir veri
yapısı tanımlayarak başlayacağız.

35
02:47.130 --> 02:52.290
Başlangıç olarak, işlev işaretçisinin bir
prototipini tanımlayacağım.

36
02:53.680 --> 02:55.540
Buna geri arama bile diyoruz.

37
02:55.750 --> 03:02.440
Yani bu hiçbir şey değildir, sadece hiçbir
şey olmayan Y başlangıç

38
03:02.440 --> 03:04.580
argümanlarını kabul eden fonksiyona bir
işaretçiyi temsil eden bir veri tipidir.

39
03:05.590 --> 03:08.980
Umarım C'deki fonksiyon işaretçilerine
aşinasınızdır.

40
03:10.570 --> 03:14.170
Ve sonra bir görevi temsil eden son veri
yapısını tanımlayacağım.

41
03:14.500 --> 03:18.700
Dediğim gibi, görev hiçbir şey değildir,
ancak bir işlev ve onun argümanıdır.

42
03:19.270 --> 03:24.790
Bu yüzden, çalıştırılması gereken
fonksiyonun işaretçisini temsil eden bir
üye ekleyeceğim.

43
03:25.270 --> 03:27.940
İkinci üye ise tartışma konusu olacaktı.

44
03:28.390 --> 03:28.810
Tamam.

45
03:29.350 --> 03:35.440
Yani bu iki üye aslında hesaplamayı temsil
ediyor

46
03:35.440 --> 03:36.860
ve görevlerin göreve bağlanması
gerektiğini zaten biliyoruz.

47
03:37.780 --> 03:40.990
Ve bu görevi bir bağlantı listesi olarak
uygulayacaktık.

48
03:41.410 --> 03:48.760
Yani bu belirli bir görevin bir yapının
sol ve sağ işaretçilerine sahip olması
gerektiği

49
03:48.760 --> 03:53.860
anlamına gelir, böylece bu görev nesnesini
bağlı bir liste olarak tutulan görev
girdabına ekleyebiliriz.

50
03:54.730 --> 04:00.880
Yani bu bir yapıda modellenir, uygulama
olay yasasına yürütülecek

51
04:00.880 --> 04:03.040
bir görev gönderdiğinde basitçe bir görevi
temsil eder.

52
04:03.970 --> 04:07.810
Uygulama, hangi işlevin yürütülmesi
gerektiğini belirtmelidir.

53
04:08.770 --> 04:09.190
Tamam.

54
04:09.760 --> 04:15.580
Yani bu, bir fonksiyon penceresi
aracılığıyla olay döngüsü iş parçacığı
tarafından tetiklenecek

55
04:15.580 --> 04:19.690
veya çağrılacak olan uygulamaya özel
fonksiyona bir işaretçi tutacak olan
fonksiyon kışıdır.

56
04:20.890 --> 04:23.780
Sonra tanımlayacağımız ikinci şey.

57
04:25.450 --> 04:31.060
Daha sonra tanımlayacağımız ikinci şey
olay döngüsünün işleridir.

58
04:31.150 --> 04:36.670
Bu yüzden olay döngüsünün bir seferde bu
adımlardan biri olabileceğini

59
04:36.670 --> 04:38.350
tartıştık, ya boşta bir durum ya da stil
ile bitmiş.

60
04:39.220 --> 04:43.480
Bu yüzden bir olay döngüsünün durumunu
temsil eden bir numaralandırma
tanımlayacağım.

61
04:44.170 --> 04:49.270
Bu yüzden burada numaralandırmaların adını
biraz daha kolay koydum.

62
04:49.270 --> 04:53.230
Sadece olay döngüsü ve olay döngüsü meşgul
olarak adlandırıyorum.

63
04:53.560 --> 04:58.150
Görevimizi bitirmek için bunu bile almak
yerine, dağıtıcıyı bile boşta bekleyin.

64
04:58.540 --> 05:03.970
Bir olay döngüsünü bile dispatcher olarak
adlandırmak yerine, bu veri yapısının daha

65
05:03.970 --> 05:06.550
yaygın adı olduğu için olay döngüsünü olay
döngüsü olarak adlandırmaya devam
edeceğim.

66
05:07.330 --> 05:07.720
Tamam.

67
05:09.180 --> 05:14.730
Yani görev bitmiş olsa bile, bu kadar
basit bir şekilde biraz meşgul olarak
yeniden adlandırılır.

68
05:15.030 --> 05:16.580
Peki neden döngü bile meşgul değil? Bu,
olay döngümüzün Scotty

69
05:16.590 --> 05:21.900
adlı yıldızından gelen görevi vurgulamakla
meşgul olduğu anlamına gelir.

70
05:22.560 --> 05:23.010
Tamam.

71
05:24.120 --> 05:29.370
Ve son olarak, aslında bir olay döngüsünü
temsil eden bir veri yapısı
tanımlayacaktık.

72
05:30.630 --> 05:33.510
Bu yüzden olay döngüsü adı verilen veri
yapısını tanımlayacaktık.

73
05:33.900 --> 05:38.370
Şimdi olay döngüsünün üyelerinin neler
olması gerektiğini tartışalım.

74
05:39.570 --> 05:42.870
Şimdi olay döngüsünün üyelerinin ne olması
gerektiğini tartışalım.

75
05:44.220 --> 05:47.130
Her şeyden önce, olay döngüsünün bir
görevi vardır, Eddie.

76
05:47.670 --> 05:48.120
Tamam.

77
05:48.720 --> 05:53.790
Dolayısıyla, olay döngüsünün ilk üyesiyle
başlamak için ilk göreve ve

78
05:53.800 --> 05:56.340
görevdeki göreve bir işaretçi ve bunu bir
görev olarak çağırıyoruz.

79
05:56.340 --> 05:59.310
İlk görevde de hayal kırıklığına
uğramıştı.

80
05:59.310 --> 06:06.120
Eddie, hatırla, Tasker olay döngüsü
tarafından sürdürülen bir veri yapısıdır
ve bu görevin iki

81
06:06.120 --> 06:12.170
bağımsız iş parçacığı tarafından manipüle
edilen ortak bir veri yapısı olduğunu da
tartışmıştık.

82
06:12.340 --> 06:14.550
Uygulama iş parçacıkları ve olay döngüsü
testi.

83
06:14.820 --> 06:18.900
Bu nedenle Q'yu gerçekleştirmek için bir
mutekse ihtiyacımız vardı.

84
06:18.900 --> 06:22.920
Yoksa bu görevi birbirini dışlayan bir
şekilde mi yaptınız?

85
06:24.030 --> 06:27.450
İşte bu nedenle bir sessiz değişkenine
ihtiyacımız var.

86
06:28.290 --> 06:31.710
Ve buna olay döngüsü MDEX Savannah
diyelim.

87
06:31.710 --> 06:40.320
Ancak bu Gary R görevine yeni bir görev NQ
yapacağız veya

88
06:40.320 --> 06:46.380
Deku'ya ne zaman gideceksek, bu görevden
bir görev, Eddy, bunları gerçekleştirecek

89
06:46.380 --> 06:46.800
ve yalnızca uzun süre görevden alındıktan
sonra çalışmanızı garanti edecektik.

90
06:47.790 --> 06:50.250
Ve elbette, olay döngüsünün bir durumu
vardır.

91
06:50.310 --> 06:56.670
Öyleyse, Döngünün bile yürütüldüğü mevcut
durumu temsil eden bir üye değişken
tanımlayalım.

92
06:57.390 --> 07:00.270
Yani bu değişken boşta ya da meşgul
olabilir.

93
07:01.890 --> 07:04.920
Ayrıca olay döngüsünü de tartıştık.

94
07:04.930 --> 07:09.870
Ted, görevde yürütülecek herhangi bir
görev yoksa askıya alınabilir.

95
07:10.380 --> 07:14.850
Dolayısıyla, belirli bir iş parçacığını
askıya almak için bir koşul değişkenine
ihtiyacımız vardır.

96
07:15.990 --> 07:16.410
Tamam.

97
07:16.890 --> 07:18.630
Yani burada bir koşul değişkenimiz var.

98
07:18.870 --> 07:24.660
Bu koşul değişkenini kullanarak, bu koşul

99
07:24.660 --> 07:25.080
değişkenini kullanan olay döngümüzü askıya
alacağız.

100
07:25.080 --> 07:27.480
Olaya bakılması için sinyal gönderecektik.

101
07:28.710 --> 07:35.820
Ve son olarak, dediğim gibi, olay döngümüz
hiçbir şey değildir, ancak bir

102
07:35.820 --> 07:39.120
tehdittir, bu nedenle aslında yürütme
birimi olan posix tehdidine bir
işaretçimiz olmalıdır.

103
07:40.020 --> 07:40.440
Tamam.

104
07:41.430 --> 07:48.900
Ayrıca, olay döngüsünün o anda yürütmekte
olduğu göreve atanmış olmak da iyi bir
fikirdir.

105
07:50.170 --> 07:50.590
Tamam.

106
07:50.740 --> 07:55.000
Görüntü döngüsünün görevden bir görev
aldığını ve onu ateşlediğini zaten
biliyoruz.

107
07:55.840 --> 08:00.340
Yani bu, olay döngüsünün yürütmekte olduğu
geçerli

108
08:00.340 --> 08:01.120
toff'lara bir işaretçi tutacak olan üye
değişkendir.

109
08:01.720 --> 08:05.890
Olay döngüsü askıya alınmış huzur içinde
dinleniyorsa boş olacaktır.

110
08:06.670 --> 08:07.090
Tamam.

111
08:08.290 --> 08:14.650
Yani bunlar, bir yapıyı tanımlamak ya da
hatta ona bakmak için tanımlamamız gereken
üyelerdir.

112
08:15.250 --> 08:21.730
Bu üyelerin her birine neden olay döngüsü
veri

113
08:21.730 --> 08:22.540
yapısının bir parçası olarak sahip olmanız
gerektiğini zaten

114
08:23.290 --> 08:25.990
açıklamıştım. Yani işler oldukça basit ve
kolay.

115
08:26.320 --> 08:31.120
Teoriyi tartışırken tartıştığımız şeyin
tam olarak aynısını uyguluyoruz.

116
08:31.840 --> 08:34.060
Ne daha fazlasını ne de daha azını
yapıyoruz.

117
08:35.470 --> 08:41.920
Aslında, tam bir olay döngüsü kütüphanesi
uygulamak için

118
08:41.920 --> 08:42.760
yaklaşık 300 veya 350 satır kod
gerekecektir.

119
08:43.300 --> 08:47.440
Böylece insanlar bu kursun bu bölümünde
olay döngüsünün uygulamasını bitirecekler.

120
08:49.710 --> 08:55.380
Yani başlangıç olarak, şu anda bulması zor
bir hazırlığımız var ve Event

121
08:55.380 --> 08:57.930
Lou ile çalışmak için ihtiyacımız olan tüm
veri yapılarını zaten tanımladık.

122
08:58.350 --> 09:03.510
Şimdi yaptığımız bir sonraki derste, çift
döngülerle

123
09:03.510 --> 09:04.560
çalışmak için hangi API'leri yazmamız
gerektiğini tartışacaktık.


