WEBVTT

1
00:07.590 --> 00:12.990
Evet arkadaşlar, olay döngüsü
kütüphanemizin uygulamasını bitirdiğimize

2
00:12.990 --> 00:14.490
göre, en azından temel sürüm oldukça
hazır.

3
00:15.030 --> 00:20.130
Şimdi size etkinlik döngüsü kütüphanesinin
gerçek haberlerini gösterebileceğim bir
konumdayız.

4
00:20.730 --> 00:21.090
Tamam.

5
00:21.480 --> 00:27.900
Bu ders videosunda, size bir demo
uygulamasının nasıl yazılacağını

6
00:27.900 --> 00:30.990
göstereceğim ve uygulamanın adı demo app
multiplication some doxy.

7
00:31.500 --> 00:38.790
Böylece, görevi yerine getirmek için sizi
kapalı olay

8
00:38.790 --> 00:39.480
döngüsü kütüphanesi haline getirecek örnek
bir program görebilirsiniz.

9
00:39.990 --> 00:46.020
İlk görev, eklenen örneklemin tüm
elemanlarının toplamını hesaplamak, ikinci

10
00:46.020 --> 00:50.040
görev ise örneklem alanının tüm
elemanlarının çarpımını hesaplamaktır.

11
00:50.430 --> 00:50.820
Tamam.

12
00:51.600 --> 00:56.610
Elbette, bir dizinin toplamını ve
çarpımını bariz

13
00:56.610 --> 00:57.030
bir şekilde hesaplamak için bir program
yazabilirsiniz.

14
00:57.810 --> 01:04.110
Ancak burada amaç, aynı hedefe ulaşmak
için olay döngüsü

15
01:04.110 --> 01:07.320
kütüphanesini kullanacak bir program veya
uygulama kodu yazacağım.

16
01:08.460 --> 01:15.090
Ana fonksiyonda, olay döngüsü
kütüphanesini başlattığımı ve

17
01:15.090 --> 01:16.740
ardından olay döngüsü tehdidini
tetiklediğimi görebilirsiniz.

18
01:17.340 --> 01:19.650
Uyuyan ifadesini ekledim, böylece.

19
01:21.220 --> 01:27.640
Kuş gribi izinin başlatılması ve
engellenmesi ya da askıya alınması için

20
01:27.640 --> 01:32.850
küçük bir şans verebilirim, çünkü göreve
yönlendirilmiş bir görev yoktur.

21
01:34.030 --> 01:40.990
Sleep deyimini kaldırırsanız, ana
işleviniz olay döngüsü

22
01:40.990 --> 01:44.350
iş parçacığının başlatılmasına bile fırsat
vermeden tamamlanacaktır.

23
01:45.070 --> 01:45.460
Tamam.

24
01:45.850 --> 01:49.330
İşte bu nedenle uyku ifadesini buraya
ekledim.

25
01:50.590 --> 01:56.320
Şimdi yapacağım şey, ana işlevde, bazı ve
çarpma işlemlerini

26
01:56.320 --> 01:59.110
gerçekleştirmek için olay döngüsü
kütüphanesi ile görev zamanlamaya
gireceğim.

27
01:59.470 --> 02:06.040
Öncelikle, ADF'nin bazı öğelerini
gerçekleştirmek için olay

28
02:06.040 --> 02:06.700
döngüsü kütüphanesi ile bir görev
zamanlayayım.

29
02:07.390 --> 02:10.480
Bu yüzden yeni bir

30
02:13.000 --> 02:14.050
iş oluşturma görevi yazacağım.

31
02:14.230 --> 02:17.980
Bu, uygulamanın etkinliğe görev göndermek
için kullandığı API'dir.

32
02:17.980 --> 02:25.780
Loop Library elbette olay döngüsüne
atandı, ancak

33
02:25.780 --> 02:31.390
burada kış ne geçireceksiniz? İkinci
argüman ve

34
02:31.390 --> 02:36.250
pointer olarak hangi fonksiyona
geçeceksiniz? Üçüncü argüman

35
02:37.270 --> 02:37.660
olarak bilmediğimiz hangi argümanı
geçireceksiniz? Pekâlâ.

36
02:39.580 --> 02:46.450
Bu nedenle, düzenleme öğelerinin toplamını
hesaplamak için olay

37
02:46.450 --> 02:47.080
döngüsü kütüphanesi ile bir görev
göndermeye çalıştığımızı unutmayın.

38
02:47.680 --> 02:52.330
Ve unutmayın, işlev geri çağrısı
uygulamanın olaya gönderebileceğiydi.

39
02:52.330 --> 02:58.960
Döngü, fonksiyonun başlangıç argümanı
olarak y'yi kabul edeceği ve hiçbir şey
döndürmeyeceği şekilde bir prototipe sahip
olmalıdır.

40
02:59.860 --> 03:01.510
Bu, fonksiyonun prototipidir.

41
03:01.510 --> 03:03.100
Biraz böyle olmalı.

42
03:05.680 --> 03:06.100
Tamam.

43
03:06.610 --> 03:08.080
Ve görüyoruz ki.

44
03:09.220 --> 03:16.510
Hesaplama işlevlerinin, toplam ve çarpma
işlemlerinin gerçekten böyle bir prototipi
yoktur.

45
03:17.770 --> 03:20.530
Dolayısıyla, ele almamız gereken ilk sorun
budur.

46
03:21.040 --> 03:28.750
İkinci husus ise, yeni iş oluşturma
API'sinin geliştiricinin yalnızca bir
argüman sağlamasına izin vermesidir.

47
03:29.590 --> 03:34.840
Ancak toplamı ve çarpımı hesaplamak için,
reklamın kendisine işaretçi ve

48
03:34.840 --> 03:37.270
alandaki öğe sayısı olmak üzere iki
argüman iletmemiz gerekir.

49
03:38.230 --> 03:44.920
Peki, yeni iş yaratan bu fonksiyona tek
bir argüman olarak birden

50
03:47.970 --> 03:54.240
fazla argümanı nasıl aktarabilirsiniz?
İşte bu ikinci sorun, aslında sorun değil,

51
03:54.240 --> 03:57.060
olay döngüsü kütüphanesini kullanabilmek
için bazı arka plan çalışmaları yapmamız
gerekiyor.

52
03:58.050 --> 04:03.270
Bu yüzden yapacağım ilk şey tek bir veri
yapısı tanımlamak olacaktı.

53
04:04.560 --> 04:12.360
Ve bu veri yapısını kullanarak, tek bir
argüman

54
04:12.360 --> 04:12.900
olarak iletmem gereken birden fazla
argümanın etrafını sarabilirim.

55
04:14.190 --> 04:20.190
Bu nedenle, düzenlemek için Bayside
Russell'a işaretçi ve alanın

56
04:20.190 --> 04:21.240
öğe sayısı olmak üzere iki bilgi aktarmam
gerektiğini unutmayın.

57
04:21.810 --> 04:29.060
Bu yüzden argüman nesnesi türünde tek bir
nesne oluşturacağım ve

58
04:29.070 --> 04:33.000
bu göreve argüman olarak sağlamam gereken
tüm bilgileri dolduracağım.

59
04:33.000 --> 04:34.200
Yeni iş API'si oluşturun.

60
04:49.730 --> 04:56.290
Böylece bir argüman nesnesi oluşturduğumu
ve bu argüman nesnesinin tüm

61
04:56.310 --> 05:00.290
üyelerini olay döngüsü kütüphanesine
aktarmam gereken tüm bilgilerle
kandırdığımı görebilirsiniz.

62
05:00.890 --> 05:05.690
Ve burada basitçe, işaretçiyi ve nesnenin
yanına geçirecektim.

63
05:08.750 --> 05:09.170
Tamam.

64
05:09.680 --> 05:15.050
Bu şekilde, birden fazla argümanı tek bir
nesneye sararak birden

65
05:15.290 --> 05:18.530
fazla argüman iletebilir ve ardından suçu
bu tek nesneye aktarabilirsiniz.

66
05:21.940 --> 05:23.170
Böylece bu sorun çözüldü.

67
05:23.200 --> 05:25.600
Şimdi fonksiyona bir işaretçi aktarmamız
gerekiyor.

68
05:25.870 --> 05:30.700
Bu, uygulamanın sahip olduğu işlevdir ve
uygulama bu işlevin işaretçisini

69
05:30.700 --> 05:36.070
olay döngüsü kütüphanesine göndermek
ister, böylece grup kütüphanesi bile

70
05:36.070 --> 05:38.830
gelecekte bir noktada bir işaretçi
aracılığıyla işlev bozukluğunu
tetikleyebilir.

71
05:39.790 --> 05:43.540
Ancak şimdi sahip olduğu sınırlama,
işlevin bu prototipte olması gerektiğidir.

72
05:44.500 --> 05:45.670
Peki ne yapacağız? Çünkü olay döngüsü

73
05:45.670 --> 05:51.130
kütüphanem gerçekten bu iki fonksiyonu,
yani

74
05:51.130 --> 05:51.940
some ve çarpma fonksiyonlarını çağırmak
istiyor.

75
05:52.570 --> 05:55.780
Ayrıca bu fonksiyonların her biri için bir
sarmalayıcı fonksiyon oluşturacağım.

76
05:56.260 --> 06:01.780
Diyelim ki bunu bir sarmalayıcı olarak
çağırıyorum ve neden başlangıç argümanı?

77
06:03.130 --> 06:09.190
Şimdi bu fonksiyonun prototipinin bu
prototipe benzediğini görebilirsiniz ve bu
nedenle

78
06:09.190 --> 06:15.300
bu fonksiyonu yeni iş oluşturma API'sine
ikinci bir argüman olarak aktarabiliriz.

79
06:16.300 --> 06:21.700
Ancak bu işlev, bazı gerçek işlev olan bu
işlevi çağırmalıdır.

80
06:23.290 --> 06:28.060
Şimdi yapacağım şey, bu argümanı
tipleştirmek olacak.

81
06:31.980 --> 06:46.140
Ve bir argüman nesnesi olarak ve şimdi
toplamı getirebilirim,

82
06:47.010 --> 06:48.480
ancak gerçek API'de çalışırken ve şimdi
gerçek parametreleri geçerken.

83
06:58.310 --> 06:59.390
Ve işimiz bitti.

84
07:02.160 --> 07:08.580
Bu nedenle, işaretçiyi some olan gerçek
işleve geçirmek

85
07:08.580 --> 07:12.000
yerine, işaretçiyi some sarmalayıcısına
geçireceğim ve işim bitecek.

86
07:13.590 --> 07:14.010
Tamam.

87
07:15.380 --> 07:18.830
Aynı şeyi bu çarpma işleminde de
yapabilirsiniz.

88
07:20.000 --> 07:24.170
Bu yüzden çarpma işlevi için bir
sarmalayıcı işlev oluşturacaktım.

89
07:27.880 --> 07:31.390
Bu da gerçek çarpma API'sini içerir.

90
07:34.990 --> 07:36.790
Bununla da işimiz bitti.

91
07:41.240 --> 07:48.830
Bir kez daha, bir argüman nesnesi
oluşturacaktım, buna argüman nesnesi
diyelim.

92
07:51.250 --> 07:56.080
Ve son olarak, yeni iş oluşturmak için bir
API çağırın.

93
08:02.040 --> 08:03.090
Ve işimiz bitti.

94
08:03.810 --> 08:09.900
Böylece uygulamamın artık iki görevi olay
görünümü kütüphanesine gönderdiğini
görebilirsiniz.

95
08:12.730 --> 08:18.490
Ve ayrıca fena değil, ana işlev hakim
olmadan hemen önce, denizler ve kapalı
erkeklerle bir çıktı alıyorum.

96
08:19.120 --> 08:20.440
Peki şimdi ne bekliyorsunuz? Eğer bu

97
08:20.440 --> 08:23.500
programı çalıştırırsam çıktısı ne olmalı?
Bu

98
08:25.210 --> 08:31.720
argüman nesnesi fonksiyonunun tanımını
dosyanın başında

99
08:31.720 --> 08:32.380
bir yere kaydırmamız gerektiğinden değil.

100
08:35.680 --> 08:38.680
Ve şimdi, bu programı derlersem,
derlenecektir.

101
08:39.880 --> 08:41.830
Bir çalıştırılabilir dosya oluşturayım.

102
08:48.470 --> 08:50.780
Ve eğer şimdi bu programı çalıştırırsam.

103
08:56.580 --> 08:57.510
Görebilirsin.

104
09:00.330 --> 09:02.790
Öncelikle, ana fonksiyonun sonu buradadır.

105
09:03.630 --> 09:07.980
Öncelikle, ana fonksiyonumuzun çalıştığını
ve tamamlandığını görebilirsiniz.

106
09:08.460 --> 09:13.410
Ancak ortalama fonksiyonunun sonuna
tarayıcılar eklediğimiz için, ana
fonksiyonumuz

107
09:13.410 --> 09:22.200
çıkmaz ve daha sonra çift döngü
kütüphanesi, ADI'nin tüm

108
09:22.200 --> 09:23.940
elemanlarının toplamını hesaplama görevini
yürüten eklenenlerin bir kısmını hesaplar.

109
09:24.510 --> 09:29.160
Ve bundan sonra, alanın tüm

110
09:29.160 --> 09:29.550
elemanlarının çarpımını hesaplama görevini
hesaplar.

111
09:29.940 --> 09:30.360
Tamam.

112
09:30.780 --> 09:35.460
Dolayısıyla, pinglerin aslında belirli bir
sırada gerçekleşmediğini görebilirsiniz;
bu,

113
09:35.460 --> 09:45.360
akor yazdığınız kodla aynı sıradadır, öyle
ki toplamınız çarpımınızdan

114
09:45.360 --> 09:48.420
daha hızlı hesaplanır ve bundan sonra ana
işleviniz hesaplanır.

115
09:48.420 --> 09:53.340
Ve fakat işler diğer düzende
gerçekleşiyor, ana işleviniz ve
zorunluluğunuz.

116
09:53.940 --> 09:58.740
Sonra toplama fonksiyonunun çıktısını
alırsınız ve sonra bu çarpmanın çıktısına
ulaşırsınız.

117
09:59.860 --> 10:00.250
Tamam.

118
10:01.610 --> 10:07.670
Bu nedenle, sadece görev belgeleri
oluşturduğunuz, bir işi gerçekleştirmek
istediğiniz, ancak

119
10:07.670 --> 10:14.210
daha sonra bu işi bağımsız görevlere
böldüğünüz ve daha sonra bu

120
10:14.210 --> 10:19.250
görevleri yakın gelecekte yürütmek üzere
planladığınız eşzamanlı programlama
dünyasına hoş geldiniz.

121
10:19.910 --> 10:21.500
Ve kesin ve katı bir kural yoktur.

122
10:21.500 --> 10:24.470
Bu görevler herhangi bir sırada
yürütülebilir.

123
10:24.470 --> 10:31.740
Uyguladığınız mantık ve olay döngüsü
kütüphanesi tarafından görev

124
10:32.810 --> 10:33.800
alanından görevi almak ve ardından
dosyalamak için sorulur.

125
10:35.660 --> 10:36.080
Tamam.

126
10:39.020 --> 10:44.540
Dolayısıyla bu örnek size olay döngüsü

127
10:44.540 --> 10:45.260
kütüphanesinin gerçek dünyadaki kullanım
durumunu göstermiyor.

128
10:45.710 --> 10:51.770
Bu nedenle, bu kursun geri kalan kısmı
aslında bazı gerçek dünya

129
10:51.770 --> 10:55.400
programlama problemlerini çözmek için
hatalı döngü kütüphanesini nasıl
kullanabileceğinizi ele almaktadır.

130
10:56.990 --> 11:01.430
Söylemin kalan bölümünde görüşmek üzere ve
olay döngüsü

131
11:02.150 --> 11:03.740
kütüphanesini kullanarak gerçekten anlamlı
bir şeyi ikiye katlayalım.


