WEBVTT

00:02.530 --> 00:07.960
Evet arkadaşlar, şimdi kursun bu bölümünde dinleyici iş parçacığı kavramını anlayacağız.

00:08.320 --> 00:14.470
Dolayısıyla, bir uygulamanın sürekli olarak harici olayları dinlemesi çok yaygın bir senaryodur,

00:14.470 --> 00:15.070
değil mi?

00:15.100 --> 00:18.220
Bu dış olaylar her an ortaya çıkabilir.

00:18.220 --> 00:21.660
Bir uygulamanın bu olayları işlemesi gerekir, değil mi?

00:21.670 --> 00:26.620
Böylece uygulama bu harici olayları dinlemek için iş parçacıkları kullanabilir.

00:26.620 --> 00:33.700
Dolayısıyla burada iş parçacıklarının kullanımı, bir uygulamanın herhangi bir zamanda alabileceği harici

00:33.700 --> 00:37.510
olayları sürekli olarak dinleyen bir koruyucu gibidir.

00:37.720 --> 00:41.370
Şimdi bunu resimsel bir gösterimle anlamaya çalışalım.

00:41.380 --> 00:46.000
Diyelim ki sistemde çalışan bir P işleminiz var ve bu işlemi istiyorsunuz.

00:46.030 --> 00:49.600
Birden fazla harici olayı dinlemek için P, değil mi?

00:50.460 --> 00:57.060
Dolayısıyla ilk gereksinimimiz, bir P sürecinin herhangi bir zamanda dış ağdan gelebilecek bir

00:57.090 --> 01:01.290
P paketini gerçekten alabilecek bir konumda olmasıdır.

01:01.290 --> 01:01.970
Değil mi?

01:01.980 --> 01:08.310
Bunun için P işleminiz paket dinleyici iş parçacığı olarak adlandırdığımız bir iş parçacığı oluşturabilir.

01:08.340 --> 01:14.580
Bu iş parçacığının sorumluluğu sadece herhangi bir paketin ulaşıp ulaşmadığını izlemektir.

01:14.610 --> 01:15.360
Doğru.

01:15.360 --> 01:20.880
Paket gelmemişse, bu paket dinleyici iş parçacığı paketin orada olup olmadığını görmek için

01:20.880 --> 01:22.530
izlemeye devam edecektir.

01:22.560 --> 01:28.530
Ve eğer paket gelirse, bu paket dinleyici iş parçacığı ya paketi işler ya da paketi ana

01:28.530 --> 01:30.000
sürece devreder.

01:30.030 --> 01:32.130
Paket işleme için P.

01:32.130 --> 01:32.880
Doğru.

01:33.360 --> 01:40.530
Dolayısıyla, P süreci kendi başına dış dünyadan gelen herhangi bir paketin alımını dinlemek veya izlemekle meşgul

01:40.530 --> 01:47.790
değildir, ancak bu işi paket dinleyici iş parçacığı olarak adlandırdığımız ayrı bir iş parçacığına devretmiştir.

01:47.790 --> 01:48.600
Doğru.

01:49.350 --> 01:54.540
Süreciniz başka bir iç mantığı yürütmekle meşgul olabilir, değil mi?

01:55.560 --> 02:02.040
Benzer şekilde, p işleminiz, çekirdek olarak adlandırdığımız temel işletim

02:02.040 --> 02:07.680
sisteminden bildirilen bazı olayları bekliyor olabilir.

02:07.680 --> 02:08.310
Doğru.

02:08.310 --> 02:15.000
Ve P işleminizin çekirdekten bildirilecek bazı olayları beklemesi gerekmesi çok

02:15.000 --> 02:16.070
olasıdır.

02:16.080 --> 02:22.290
Bu durumda, p işleminiz çekirdek olayları olarak adlandırdığımız ikinci bir iş parçacığı oluşturabilir.

02:22.290 --> 02:23.310
Dinleyici dizisi.

02:23.310 --> 02:24.090
Doğru.

02:24.660 --> 02:32.460
Bu iş parçacığının sorumluluğu sadece olay geldiğinde çekirdek olaylarını dinlemek ve gelmesini beklemektir.

02:32.490 --> 02:39.090
Bu iş parçacığı ya olayı kendisi işler ya da olayları işlemesi için p sürecine

02:39.090 --> 02:40.050
devreder.

02:40.050 --> 02:40.860
Doğru.

02:41.430 --> 02:47.580
Benzer şekilde, P işleminizin kullanıcı girdisini gerçekten beklemesini istersiniz, değil mi?

02:47.580 --> 02:53.080
Bunun için P işleminiz kullanıcı girişi dinleyici iş parçacığı adı verilen üçüncü bir iş parçacığı oluşturabilir.

02:53.080 --> 02:59.020
Ve bu iş parçacığının sorumluluğu sadece kullanıcının herhangi bir girdi sağlamasını beklemektir.

02:59.050 --> 03:03.670
Girdi, CLI arayüzü veya GUI arayüzü kullanılarak sağlanabilir.

03:03.700 --> 03:04.810
Önemli değil.

03:04.810 --> 03:05.530
Doğru.

03:06.190 --> 03:12.190
Böylece kullanıcı girdisini bekleme sorumluluğu kullanıcı girdisi adı verilen yeni iş parçacığına devredilmiştir.

03:12.190 --> 03:13.110
Dinleyici dizisi.

03:13.120 --> 03:13.840
Doğru.

03:15.920 --> 03:22.520
O zaman başka bir süreç senaryosunda, P aynı sistem üzerinde çalışan başka bir süreçten (P) bazı veriler

03:22.520 --> 03:26.180
veya bir tür olay bekliyor olabilir, değil mi?

03:26.210 --> 03:31.790
Bu durumda, süreciniz P, süreç iletişim iş parçacığı olarak adlandırılan dördüncü bir iş parçacığı oluşturmaya karar

03:31.790 --> 03:32.450
verebilir.

03:32.750 --> 03:39.530
Bu iş parçacığının sorumluluğu sadece aynı sistem üzerinde çalışan başka bir süreçten bildirilen bazı

03:39.530 --> 03:42.020
olayları veya verileri beklemektir.

03:42.020 --> 03:42.770
Doğru.

03:44.180 --> 03:49.850
Dolayısıyla, bu diyagramın tamamına bütüncül bir bakış açısıyla bakarsanız, dört ipliğin hepsinin bir numaralı iplik olduğunu

03:49.850 --> 03:50.810
görürsünüz.

03:50.810 --> 03:52.310
Bu ikinci konu.

03:52.340 --> 03:54.920
Bu üç numaralı ve dört numaralı konu.

03:55.190 --> 03:58.340
Dört iş parçacığının tümü engelleme durumundadır.

03:58.370 --> 04:04.760
Engelleme durumu, bir olayı veya harici bir varlıktan gelen bir girdiyi bekledikleri anlamına gelir.

04:04.760 --> 04:10.400
Bu harici varlık kullanıcı olabilir, çekirdek olabilir, ağ olabilir veya başka bir şey olabilir.

04:10.430 --> 04:11.240
Doğru.

04:11.570 --> 04:17.810
Dolayısıyla, p işleminizin engellenmiş durumda olmasını istemezsiniz çünkü P işleminiz kendi

04:17.810 --> 04:25.100
iç mantığını yürütmekle meşgul olabilir ve bu nedenle ana mantığınızın bir olayı beklerken engellenmesini istemediğiniz

04:25.100 --> 04:29.960
için p işlemi dinleyici iş parçacıklarını oluşturur, değil mi?

04:29.990 --> 04:33.620
Bu dinleyici iş parçacıkları süreç adına köle olarak çalışır.

04:33.650 --> 04:37.160
P Harici bir olayın gelmesini beklemek.

04:37.190 --> 04:44.190
Doğru, bu nedenle dinleyici iş parçacıkları kullanarak süreç tüm olayları aynı anda dinleyebilir ve olay geldiğinde,

04:44.190 --> 04:49.000
süreciniz bu olayları işleyebilecek bir konumda olmalıdır.

04:49.020 --> 04:49.620
Doğru.

04:49.620 --> 04:54.570
Bu yüzden bu bölümde alıştırma olarak bir P süreci yazacaktık.

04:54.780 --> 05:00.480
Bu nedenle, kursun bu bölümü için bir gösteri olarak yazacağımız kod,

05:00.480 --> 05:07.680
sorumluluğu harici olayları dinlemek olan köle iş parçacıkları oluşturacak bir süreç

05:07.680 --> 05:09.780
P yazacağımızdır.

05:09.930 --> 05:14.850
Yani kursun bu bölümü için biraz soket programlama deneyimine ihtiyacınız var.

05:14.880 --> 05:19.950
Herhangi bir soket programlama deneyiminiz olmasa bile, yine de kursun bu bölümüne devam etmenizi

05:19.950 --> 05:25.770
tavsiye ederim çünkü soketle ilgili herhangi bir programlama, eğer farkında değilseniz, kodumu kopyalayıp

05:25.770 --> 05:27.830
yapıştırabilirsiniz.

05:27.840 --> 05:33.660
Ancak sonuçta, hiç soket programlama deneyiminiz olmasa bile, dinleyici iş parçacığı kavramını

05:33.660 --> 05:40.320
kullanarak birden fazla harici olayı dinleyebilen bir sürecin veya uygulamanın nasıl tasarlanacağını

05:40.320 --> 05:42.300
anlayacaksınız.

05:43.110 --> 05:48.090
Yani yapacağımız şey, uygulamamızın yanı sıra birden fazla ağ UDP

05:48.090 --> 05:52.440
soketini dinleyeceğimiz bir uygulama uygulayacaktık.

05:52.440 --> 05:56.430
Aynı zamanda, kullanıcı girdisini bekleyeceğiz, değil mi?

05:56.430 --> 06:01.620
Yani bunlar uygulamamızın dinleyeceği iki harici olaydır.

06:02.070 --> 06:07.680
Harici olayı dinleme tekniği, olayın türüne bakılmaksızın aynıdır.

06:07.680 --> 06:13.110
Yani bu örnekte, tanıtım programımızda, çekirdek olaylarını dinlemeyi ya da diğer süreçlerin

06:13.110 --> 06:15.660
olaylarını dinlemeyi ele almadık.

06:15.660 --> 06:22.260
Bunun nedeni, herhangi bir çekirdek programlamasından haberdar olmadığınızı ve süreçler arası iletişimden

06:22.260 --> 06:25.680
haberdar olmadığınızı varsaymamdır.

06:25.680 --> 06:26.400
Doğru.

06:26.970 --> 06:32.960
Ancak dediğim gibi, harici olayları dinleme tekniği olayların türüne bakılmaksızın aynıdır,

06:32.970 --> 06:40.170
bu sadece harici olayları dinlemek için bir bağımlı iş parçacığı dağıtmanın olayların türüne bağlı olmadığı anlamına

06:40.170 --> 06:41.220
gelir.

06:41.220 --> 06:47.710
Yani yarın çekirdek olaylarını veya iki süreç arasındaki süreçler arası iletişimi öğrenirseniz,

06:47.710 --> 06:53.380
çekirdek olaylarını ve diğer süreçlerden gelen olayları dinlemek için kursun bu bölümünde

06:53.380 --> 06:57.400
uygulayacağımız aynı tasarımla devam edebilirsiniz.

06:57.400 --> 06:58.060
Doğru.

06:58.390 --> 07:04.600
Uygulayacağımız uygulamanın temel tasarımı değişmeyecek ve kursun bu bölümü için

07:04.600 --> 07:07.360
tüm kodlar bu dizinde bulunabilir.

07:07.360 --> 07:07.780
Değil mi?

07:07.810 --> 07:10.720
Multithreading Bible slash olay dinleyicileri.
