WEBVTT

1
00:07.320 --> 00:12.210
Evet arkadaşlar, şimdi asenkron ve
multithreading programlama arasındaki
farkı anlamaya çalışalım.

2
00:12.870 --> 00:17.640
Eğer internette gezinirseniz ve Google'da
asenkron ve multithreading ebeveyn
programlama arasındaki

3
00:17.640 --> 00:22.680
fark nedir diye bir arama yaparsanız,
birçok makale ile karşılaşırsınız.

4
00:23.430 --> 00:30.060
Dolayısıyla, asenkron programlamanın
multithreading programlama ile aynı olup
olmadığı ve eğer

5
00:30.060 --> 00:34.170
değilse, o zaman hangi açıdan farklı
oldukları çok yaygın bir

6
00:36.220 --> 00:42.610
kafa karışıklığıdır. Öncelikle, asenkron
ve multithreading programlama aynı gibi
görünse

7
00:42.610 --> 00:48.400
de aslında aynı değildir, multitasking
asenkron programlamanın bir şeklidir, bu

8
00:48.400 --> 00:54.790
yüzden sağ taraftaki diyagramda
görebilirsiniz, asenkron programlama
aslında daha büyük

9
00:54.790 --> 00:58.030
bir kelimedir ve multitasking programlama
asenkron programlamanın sadece bir
parçasıdır.

10
00:58.630 --> 00:59.020
Tamam.

11
00:59.380 --> 01:04.960
Dolayısıyla, çok iş parçacıklı bir program
yazdığınız

12
01:04.960 --> 01:05.470
anda, eşzamansız programlama da yazdığınız
doğrudur.

13
01:06.310 --> 01:12.490
Ancak burada şaşırtıcı olan, tek iş
parçacıklı bir programın da eşzamansız bir
program olabileceğidir.

14
01:13.210 --> 01:15.430
Ve bu kursta yapacağımız şey de bu.

15
01:16.100 --> 01:22.750
Tek iş parçacıklı bir asenkron program
yazacağız, böylece asenkron programlama
tek bir

16
01:22.750 --> 01:25.870
iş parçacığı ile yapılabileceği gibi
birden fazla iş parçacığı ile de
yapılabilir.

17
01:26.230 --> 01:28.390
Bu konuda herhangi bir sınırlama
bulunmamaktadır.

18
01:29.500 --> 01:32.030
Multithreading tamamen işin
başlatılmasıyla ilgilidir.

19
01:32.140 --> 01:36.670
İş parçacıklarına paralel olarak
gerçekleştirmeleri için bazı Frauke'ler
atanır.

20
01:37.630 --> 01:38.020
Tamam.

21
01:38.350 --> 01:45.310
Umarım çoklu iş parçacığının tam olarak ne
olduğunu anlamışsınızdır ve çoklu iş
parçacığı, paralel olarak

22
01:45.310 --> 01:50.740
gerçekleştirilecek bir iş yığınını atayan
iş akışı iş parçacıkları olarak
adlandırılan bazı iş parçacıklarına
sahiptir.

23
01:51.620 --> 01:53.860
Bu asenkron programlama değildir.

24
01:53.860 --> 01:55.590
Her şey görevle ilgili.

25
01:56.110 --> 01:59.110
Görev, yapılması gereken bir parça veya iş
anlamına gelir.

26
02:00.130 --> 02:00.520
Tamam.

27
02:03.370 --> 02:11.140
Herhangi bir zamanda bir uygulama,
işlenmek üzere bir kuyrukta bir dizi ağ
paketine sahip olabilir.

28
02:11.980 --> 02:17.800
Örneğin, bir uygulamanız var ve bu
uygulama soket üzerinde bazı

29
02:17.800 --> 02:22.150
ağ paketleri aldı ve bu ağ paketleri bir
kuyruğa sıralandı.

30
02:22.420 --> 02:26.020
Ancak bu ağ paketleri henüz uygulama
tarafından işlenmemiştir.

31
02:27.040 --> 02:33.280
Yani bir bakıma, uygulamanın yerine
getirmesi gereken bir görevi vardır ve bu
görev,

32
02:33.280 --> 02:36.940
bir kuyruğa sıralanmış olan bu on ağ
paketini işlemekten başka bir şey
değildir.

33
02:38.140 --> 02:43.840
Benzer şekilde, bir uygulama zamanlayıcı
geri arama işlevini işlemek için bekleyen
bir göreve sahip olabilir.

34
02:44.950 --> 02:49.630
Bir zamanlayıcı geri çağrısı hiçbir şey
değildir, ancak bir zamanlayıcı tarafından
çağrılan bir işlevdir.

35
02:50.410 --> 02:50.770
Tamam.

36
02:52.650 --> 03:00.120
Dolayısıyla, bir uygulamanın bunları
gerçekleştirmek için daha bekleyen bir
görevi olabilir,

37
03:00.150 --> 03:07.590
bir uygulamanın kendisinin bir ağ paketi
ürettiği ve uygulamanın bu ağ

38
03:07.590 --> 03:09.450
paketini uzaktaki bir makineye göndermesi
gereken başka bir görevi olabilir.

39
03:10.140 --> 03:13.800
Yani bir bakıma, uygulamanın yapması
gereken bekleyen bir işi var.

40
03:15.090 --> 03:21.720
Ve son olarak, bir son kullanıcı olarak
bazı Clia'ları almanız

41
03:21.720 --> 03:27.630
gerekebilir veya G-A-Y kullanarak uygulama
ile etkileşime girmeye çalışıyorsunuz

42
03:27.630 --> 03:28.950
ve uygulama işlemek için kullanıcıdan bir
istek göndermiş olabilir.

43
03:29.850 --> 03:31.620
Yani bu artık daha önce yapılması gereken
bir görev.

44
03:33.180 --> 03:39.090
Dolayısıyla, herhangi bir zamanda bir
uygulamanın gerçekleştirmesi

45
03:39.090 --> 03:39.870
gereken çok sayıda görevle bombardımana
tutulabileceğini görebilirsiniz.

46
03:40.650 --> 03:46.830
Şimdi şu soru ortaya çıkıyor: Uygulama

47
03:47.850 --> 03:48.240
harcama görevini nasıl tamamlayacak?
Pekala.

48
03:48.750 --> 03:50.010
Ve hangi sırayla? Ve uygulama bu görevi
paralel

49
03:51.120 --> 03:57.540
izler başlatarak paralel olarak mı
yürütecek yoksa uygulama

50
03:57.540 --> 04:00.330
bu görevi sırayla mı gerçekleştirecek? Ve
mevcut görev

51
04:01.500 --> 04:06.510
yürütülürken, başka görevler de gelip
devreye girebilir.

52
04:07.500 --> 04:07.920
Tamam.

53
04:08.580 --> 04:14.370
Bir işi birbirinden bağımsız görevlere
bölen ve daha sonra bu görevleri

54
04:14.370 --> 04:21.780
belirli bir sırayla yürüten programlar
geliştirdiğimiz asenkron programlama
dünyasına hoş geldiniz.

55
04:23.340 --> 04:29.340
Bu yüzden hepimiz bu derste, uygulamanızın
mantığı bağımsız görevlere

56
04:29.460 --> 04:36.060
bölerek ve ardından her bir görevi
bağımsız olarak yürüterek

57
04:36.060 --> 04:36.900
iç mantığını çalıştırabileceği bir
kütüphane, mini bir kütüphane
geliştireceğiz.

58
04:38.010 --> 04:39.420
Yani şimdi ileriye doğru.

59
04:40.050 --> 04:44.530
Peki asenkron tek iş parçacıklı uygulama
nedir?

60
04:45.090 --> 04:47.490
Adından da anlaşılacağı gibi, tek iş
parçacıklıdır.

61
04:47.490 --> 04:54.510
Bu, uygulamanın bir iş parçacığına sahip
olduğu ve eşzamanlı olduğu anlamına gelir,
yani bir

62
04:54.510 --> 04:59.700
D1 görevi gerçekleştirilir ve bir sonraki
görev yalnızca önceki görev tamamen
yürütüldüğünde tetiklenir.

63
05:00.780 --> 05:06.270
Dolayısıyla, bunun eşzamanlı, tek iş
parçacıklı bir uygulama modelini temsil
ettiğini görebilirsiniz.

64
05:07.980 --> 05:14.190
Her görev yalnızca bir önceki görev
tamamen bittiğinde gerçekleştirilir ve

65
05:14.190 --> 05:16.740
görevi birbiri ardına yürüten tek bir iş
parçacığı vardır.

66
05:18.050 --> 05:18.470
Tamam.

67
05:19.900 --> 05:25.150
Ardından senkronize çok iş parçacıklı
model olarak adlandırılan ikinci modele
gelin.

68
05:25.840 --> 05:30.760
Uygulamanızı bu modeli kullanarak
tasarlarsanız, uygulamanızın birden

69
05:30.760 --> 05:32.590
fazla tehdit başlatmak zorunda kalacağını
görürsünüz.

70
05:33.520 --> 05:33.970
Tamam.

71
05:34.390 --> 05:38.380
Ve her etiket, gerçekleştirilecek tam
olarak bir görevle ilişkilendirilir.

72
05:39.590 --> 05:42.560
Yani Tehdit üç, üç numaralı görevi yerine
getiriyor.

73
05:42.830 --> 05:46.220
Stratfor dört numaralı görevi paralel
olarak yürütüyor.

74
05:47.660 --> 05:54.020
Dolayısıyla, her tehdit tam olarak bir
görevle ilişkilendirildiği için
eşzamanlıdır ve uygulamanız birden fazla

75
05:54.020 --> 05:59.510
görevi paralel olarak yürütmek için birden
fazla iş parçacığını kaybettiği için çok
iş parçacıklıdır.

76
06:01.240 --> 06:06.730
Daha sonra üçüncü tasarıma gelecek
olursak, Austin tek iş parçacıklı bir

77
06:06.730 --> 06:13.360
program atmıştır, bu da uygulamanızın tek
iş parçacıklı bir program olacağı,

78
06:13.360 --> 06:13.660
ancak bir dizi görevi eşzamansız bir
şekilde yürüteceği anlamına gelir.

79
06:14.110 --> 06:20.410
Örneğin, tozlu bir'i kısmen yürüttü ve
ardından Görev iki'yi yürütmeye geçti.

80
06:21.010 --> 06:28.330
Ardından, D2 görevini kısmen yürüttükten
sonra, tozlu olanla ilişkili

81
06:28.330 --> 06:30.310
kalan işi bitirmek için tekrar D1 görevine
geçer.

82
06:31.150 --> 06:37.840
Ve D1 görevi bittikten sonra, D2 görevini
tekrar

83
06:37.840 --> 06:38.890
yerine getirmekten daha zor görevleri
yerine getirmeyi ölçer.

84
06:39.400 --> 06:40.570
Ve devam ediyor.

85
06:41.380 --> 06:49.600
Dolayısıyla, görev yürütme sırasının ve bu
uygulama tasarımı modelinin kesin
olmadığını görebilirsiniz.

86
06:51.170 --> 07:00.410
Görevlerin rastgele bir sırada
yürütülebilmesi, bir uygulamanın
eşzamansız tasarlanmasına yol açar.

87
07:01.840 --> 07:07.750
Birinci kademenin kısmen yürütülebildiğini
ve aynı görevin

88
07:07.750 --> 07:09.460
kalan kısmının bir süre sonra
yürütüldüğünü görebilirsiniz.

89
07:10.600 --> 07:11.050
Tamam.

90
07:12.090 --> 07:19.500
Böylece hiçbir görevin CPU'yu çok uzun
süre tüketmediğini görebilirsiniz çünkü
eşzamansız

91
07:19.500 --> 07:27.210
tek iş parçacıklı bir uygulama ve
uygulama, görev hala bitmemişken görevi

92
07:27.210 --> 07:29.910
gerçekleştirmeyi ve ardından hesaplama
yapmak için başka bir görev yüklemeyi
seçebilir.

93
07:31.850 --> 07:38.990
Ve son olarak, asenkron çoklu iş
parçacıklı uygulama tasarım modeli gelir.
Asenkron

94
07:38.990 --> 07:45.530
çoklu iş parçacığında, yalnızca bir
uygulama birden fazla iş parçacığı
başlatmakla kalmaz,

95
07:45.530 --> 07:46.670
aynı zamanda her iş parçacığı bir dizi
görevi eşzamanlı bir şekilde yürütür.

96
07:47.800 --> 07:48.220
Tamam.

97
07:49.730 --> 07:56.810
Bu yüzden bu derste, tek bir iş parçacıklı
tasarım

98
07:56.810 --> 07:59.090
kullanarak uygulama yapmamızı sağlayan
küçük bir kütüphane tasarlayacağız.

99
07:59.780 --> 08:08.060
Ve daha sonra bu tasarımı, eşzamansız çok
iş parçacıklı

100
08:08.060 --> 08:08.690
tasarım kullanarak bir uygulama
gerçekleştirmek için kolayca
genişletebiliriz.

101
08:10.400 --> 08:19.370
Eşzamansız programlama kullanan tek iş
parçacıklı bir programın, bir tavan
arasındaki

102
08:19.460 --> 08:26.930
tüm tam sayıların toplamını ve bir adi'nin
tüm tam sayılarının

103
08:26.930 --> 08:29.240
çarpımını, bu iki yürüyüş parçasını
görevlere bölerek nasıl
hesaplayabileceğini göstereceğim.


