WEBVTT

1
00:05.560 --> 00:10.510
Şimdi size kuş gribi kütüphanesini
kullanan başka bir demo program
göstereyim.

2
00:10.960 --> 00:16.870
Yani bu örnek program ve ben bunu
tamamladım ve hemen hemen hazır atış
programıyım.

3
00:17.350 --> 00:20.590
Bu programda, giyilebilir cihazlar,
yükleme ve indirme konularını ele aldım.

4
00:21.100 --> 00:21.460
Tamam.

5
00:21.970 --> 00:24.670
Ve bir yükleme fonksiyonu ve indirme
fonksiyonu sipariş ettim.

6
00:25.660 --> 00:32.460
Bu fonksiyonun prototipinin, olay
döngüsünün görevine

7
00:32.470 --> 00:33.160
bağlanabilecek bir şey olduğunu
görebilirsiniz.

8
00:34.740 --> 00:41.250
Ve bu fonksiyonu analiz ederseniz, orada
hiçbir şey yok, sadece upload değişkenini
iki artırıyor

9
00:41.250 --> 00:45.420
ve sonra görüyorum, o zaman upload yüzdesi
bir şey, upload olan bir şey.

10
00:46.560 --> 00:54.570
Ancak burada, yükleme değerim 10'un katı
olur olmaz

11
00:54.570 --> 00:59.100
ve hala 100 değilse, mevcut görevi
sonlandırdığımı görebilirsiniz.

12
00:59.610 --> 01:04.950
Bu işlev, olay hukuku kütüphanesi
tarafından bir görev bağlamında
yürütülecektir.

13
01:07.020 --> 01:13.740
Ve bu koşul doğru olur olmaz, aynı görevi
olay döngüsü kütüphanesi ile zamanlıyorum.

14
01:14.730 --> 01:22.170
Ve mevcut göreve hükmediyorum, yani bir
bakıma yaptığım şey, yükleme yüzdem

15
01:22.170 --> 01:29.220
zamanın çarpımı haline gelir gelmez mevcut
görevi sonlandırıyorum ve aynı

16
01:29.220 --> 01:33.540
görevi tekrar yapmalıyız, aynı şeyi bu
indirme işlevinde de yapıyorum.

17
01:34.230 --> 01:38.670
Bu indirme işlevi, olay döngüsü
kütüphanesi tarafından bir görev
bağlamında çağrılacaktır.

18
01:39.150 --> 01:45.750
Ve indirme değişkeni bunların ayrılmaz bir
katı haline gelir gelmez, mevcut

19
01:45.750 --> 01:49.620
görevi sonlandırıyorum ve aynı görevi olay
döngüsü kütüphanesi ile yapmalıyım.

20
01:51.020 --> 01:58.790
Ve ana işlevde, basitçe yükleme için bir
görev ve indirme

21
01:58.790 --> 01:59.330
için başka bir görev olmak üzere iki görev
oluşturacağım.

22
01:59.750 --> 02:06.050
Şimdi sizden rica ediyorum, bu programı
çalıştırmadan bile, bu programın
çıktısının

23
02:06.050 --> 02:09.440
ne olacağını, bu programın nasıl
davranacağını anlayabilir misiniz?
Dosyanın adından da

24
02:11.140 --> 02:15.970
anlaşılacağı gibi, demo uygulaması tek iş
parçacıklı eşzamanlılık olarak
adlandırılır.

25
02:16.360 --> 02:21.640
Peki bu programı çalıştırırken herhangi
bir eşzamanlılığa tanık oldunuz mu? Şimdi
size

26
02:22.540 --> 02:28.990
bu programın çıktısını göstereyim ve sonra
neden böyle bir çıktı aldığınızı
açıklayacağım.

27
02:29.770 --> 02:31.730
İşte burada programı çalıştırdım.

28
02:32.470 --> 02:37.540
Ve burada indirme yüzdesinin 100'e kadar
çıktığını ve

29
02:37.540 --> 02:38.500
yükleme yüzdesinin de 100'e kadar
çıktığını görebilirsiniz.

30
02:38.860 --> 02:43.390
Ve şimdi bile döngü iş parçacığı askıya
alındığı boşta durumdadır.

31
02:44.530 --> 02:50.200
Ancak çıktıdan indirme yüzdesinin yanı
sıra yükleme

32
02:50.200 --> 02:51.640
yüzdesinin de paralel olarak arttığını
analiz edebilirsiniz.

33
02:51.910 --> 02:58.420
Yani, aynı zamanda, indirme yüzdesi zamana
göre artar

34
02:58.420 --> 02:59.110
ve ardından yükleme yüzdesi zamana göre
artar.

35
02:59.470 --> 03:05.860
Sonra yine indirme yüzdesi zamanla
artıyor, yükleme yüzdesi 10 artıyor ve
devam ediyor.

36
03:06.550 --> 03:08.560
Peki burada eşzamanlılık görüyor musunuz?
İki bağımsız görevin

37
03:09.400 --> 03:16.240
döngü kütüphanesi tarafından bile
zamanlandığını göremiyor musunuz?
Alternatif

38
03:16.720 --> 03:20.890
olarak, başka bir deyişle, eşzamanlı
olarak çalışıyorlar mı?

39
03:21.730 --> 03:24.280
Artık bir programda birden fazla parçamız
yok.

40
03:24.280 --> 03:29.320
Elimizdeki tek parça bu ana iş parçacığı
ve olay döngüsü iş parçacığıdır.

41
03:30.010 --> 03:36.790
Ancak yine de eşzamanlılığı görüyorsunuz,
iki görev, indirme görevi ve yükleme

42
03:36.790 --> 03:41.740
görevi eşzamanlı bir şekilde etiketlenmiş
bir olay döngüsü tarafından tetikleniyor.

43
03:43.060 --> 03:49.150
Başka bir deyişle, iki görev arasında
bağlam değiştirmeye benzer bir

44
03:49.150 --> 03:53.440
şeyin gerçekleştiğini de
söyleyebilirsiniz, ancak bağlam değiştirme
kabileler arasında gerçekleşir.

45
03:54.040 --> 04:01.180
Ancak burada davranışın iki görev arasında
bağlam değiştirmeye benzer olduğunu

46
04:01.750 --> 04:06.130
görebiliyoruz, yükleme ve indirme yüzdesi
neredeyse aynı anda artıyor.

47
04:06.640 --> 04:14.110
Yükleme yüzdesinin sıfırdan 100'e çıkması
ve ardından sadece indirme

48
04:14.110 --> 04:15.760
yüzdesinin sıfırdan başlayıp 200 olması
söz konusu değildir.

49
04:16.210 --> 04:22.690
Hem yükleme hem de indirme yüzdelerinin
neredeyse aynı anda arttığını
görebilirsiniz.

50
04:23.470 --> 04:28.240
Yani bir bakıma, burada tek bir iş
parçacığı ile eşzamanlılık
uygulayabiliyoruz.

51
04:28.240 --> 04:31.090
Bu tek iplik bir şey değil, ama döngü izi
bile.

52
04:31.960 --> 04:32.350
Tamam.

53
04:33.470 --> 04:37.580
Tebrikler, tek iş parçacıklı bir programda
eşzamanlılık uyguladınız.

54
04:38.870 --> 04:46.160
Yani, tek bir tiyatro programında, birden
fazla görev veya birden fazla

55
04:46.160 --> 04:50.960
iş parçası yapabilir ve bu iş parçalarının
ilerleme özelliği göstermesini
sağlayabilirsiniz.

56
04:51.620 --> 04:57.080
Ayrıca bu görevlerin işletim sisteminiz
tarafından görülemeyeceğini de unutmayın.

57
04:57.080 --> 05:00.950
İşletim sisteminiz programınızı iş
parçacığı olarak görür.

58
05:01.340 --> 05:06.080
Yani, işletim sisteminiz programınızın
üçte iki ana iş parçacığı ve bir de döngü

59
05:06.080 --> 05:09.230
iş parçacığı olduğunu bilir, ancak işletim
sisteminiz görev hakkında hiçbir şey
bilmez.

60
05:09.950 --> 05:13.790
Görev, kendi yararımız için yarattığımız
bir şeydir.

61
05:14.360 --> 05:19.250
Görev, yapımızda kullanıcı tarafından
tanımlanan ve bu programı

62
05:19.250 --> 05:21.170
çalıştırdığınız temel işletim sistemi
tarafından görülemeyen bir şeydir.

63
05:22.600 --> 05:29.590
Dolayısıyla, görevlerin hesaplama
açısından çok yoğun olduğu büyük bir
yazılım programında,

64
05:29.590 --> 05:34.570
bir görevi aynı CPU üzerinde çok uzun bir
süre yürütmek istemezsiniz.

65
05:35.320 --> 05:41.530
Bunun nedeni, programınızdaki diğer
görevin CPU için durması ve

66
05:41.530 --> 05:43.720
bu nedenle aynı görevi tekrar tekrar
zamanlamak istemenizdir.

67
05:44.050 --> 05:47.410
Büyük bir işi küçük küçük parçalar halinde
yapmak istiyorsunuz.

68
05:48.160 --> 05:53.170
Bunun da ötesinde, programınız çoklu görev
yapmıyor ve tek iş parçacıklı.

69
05:53.500 --> 05:57.730
Dolayısıyla, tek iş parçacıklı bir
programda da eşzamanlılığı
gerçekleştirmeye ihtiyaç vardır.

70
05:58.660 --> 06:00.370
Bu da bir başka hızlı demo.

71
06:00.400 --> 06:06.850
Size hem önceki programı hem de bu
programı analiz etmenizi

72
06:06.850 --> 06:12.970
ve farklı şeylerin birbirine nasıl
uyduğunu görmenizi ve bu kursun

73
06:12.970 --> 06:13.690
kalan bölümünde döngülerle bile başka
neler yapabileceğinizi analiz etmenizi
öneririm.

74
06:14.020 --> 06:20.080
Size Event Loop Kütüphanesinin gerçek
programlama dünyasında meydana gelen

75
06:20.080 --> 06:23.380
farklı türdeki eşzamansız problemleri
çözmek için nasıl kullanılabileceğini
göstereceğim.

76
06:23.800 --> 06:29.740
Ancak bunlar, olay döngülerinin gücünü
anlamanıza yardımcı

77
06:29.740 --> 06:30.280
olmak için size gösterdiğim örnek demo
programlardır.


