Evet arkadaşlar, şimdi kursun bu bölümünde dinleyici iş parçacığı kavramını anlayacağız.
Dolayısıyla, bir uygulamanın sürekli olarak harici olayları dinlemesi çok yaygın bir senaryodur,
değil mi?
Bu dış olaylar her an ortaya çıkabilir.
Bir uygulamanın bu olayları işlemesi gerekir, değil mi?
Böylece uygulama bu harici olayları dinlemek için iş parçacıkları kullanabilir.
Dolayısıyla burada iş parçacıklarının kullanımı, bir uygulamanın herhangi bir zamanda alabileceği harici
olayları sürekli olarak dinleyen bir koruyucu gibidir.
Şimdi bunu resimsel bir gösterimle anlamaya çalışalım.
Diyelim ki sistemde çalışan bir P işleminiz var ve bu işlemi istiyorsunuz.
Birden fazla harici olayı dinlemek için P, değil mi?
Dolayısıyla ilk gereksinimimiz, bir P sürecinin herhangi bir zamanda dış ağdan gelebilecek bir
P paketini gerçekten alabilecek bir konumda olmasıdır.
Değil mi?
Bunun için P işleminiz paket dinleyici iş parçacığı olarak adlandırdığımız bir iş parçacığı oluşturabilir.
Bu iş parçacığının sorumluluğu sadece herhangi bir paketin ulaşıp ulaşmadığını izlemektir.
Doğru.
Paket gelmemişse, bu paket dinleyici iş parçacığı paketin orada olup olmadığını görmek için
izlemeye devam edecektir.
Ve eğer paket gelirse, bu paket dinleyici iş parçacığı ya paketi işler ya da paketi ana
sürece devreder.
Paket işleme için P.
Doğru.
Dolayısıyla, P süreci kendi başına dış dünyadan gelen herhangi bir paketin alımını dinlemek veya izlemekle meşgul
değildir, ancak bu işi paket dinleyici iş parçacığı olarak adlandırdığımız ayrı bir iş parçacığına devretmiştir.
Doğru.
Süreciniz başka bir iç mantığı yürütmekle meşgul olabilir, değil mi?
Benzer şekilde, p işleminiz, çekirdek olarak adlandırdığımız temel işletim
sisteminden bildirilen bazı olayları bekliyor olabilir.
Doğru.
Ve P işleminizin çekirdekten bildirilecek bazı olayları beklemesi gerekmesi çok
olasıdır.
Bu durumda, p işleminiz çekirdek olayları olarak adlandırdığımız ikinci bir iş parçacığı oluşturabilir.
Dinleyici dizisi.
Doğru.
Bu iş parçacığının sorumluluğu sadece olay geldiğinde çekirdek olaylarını dinlemek ve gelmesini beklemektir.
Bu iş parçacığı ya olayı kendisi işler ya da olayları işlemesi için p sürecine
devreder.
Doğru.
Benzer şekilde, P işleminizin kullanıcı girdisini gerçekten beklemesini istersiniz, değil mi?
Bunun için P işleminiz kullanıcı girişi dinleyici iş parçacığı adı verilen üçüncü bir iş parçacığı oluşturabilir.
Ve bu iş parçacığının sorumluluğu sadece kullanıcının herhangi bir girdi sağlamasını beklemektir.
Girdi, CLI arayüzü veya GUI arayüzü kullanılarak sağlanabilir.
Önemli değil.
Doğru.
Böylece kullanıcı girdisini bekleme sorumluluğu kullanıcı girdisi adı verilen yeni iş parçacığına devredilmiştir.
Dinleyici dizisi.
Doğru.
O zaman başka bir süreç senaryosunda, P aynı sistem üzerinde çalışan başka bir süreçten (P) bazı veriler
veya bir tür olay bekliyor olabilir, değil mi?
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
verebilir.
Bu iş parçacığının sorumluluğu sadece aynı sistem üzerinde çalışan başka bir süreçten bildirilen bazı
olayları veya verileri beklemektir.
Doğru.
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
görürsünüz.
Bu ikinci konu.
Bu üç numaralı ve dört numaralı konu.
Dört iş parçacığının tümü engelleme durumundadır.
Engelleme durumu, bir olayı veya harici bir varlıktan gelen bir girdiyi bekledikleri anlamına gelir.
Bu harici varlık kullanıcı olabilir, çekirdek olabilir, ağ olabilir veya başka bir şey olabilir.
Doğru.
Dolayısıyla, p işleminizin engellenmiş durumda olmasını istemezsiniz çünkü P işleminiz kendi
iç mantığını yürütmekle meşgul olabilir ve bu nedenle ana mantığınızın bir olayı beklerken engellenmesini istemediğiniz
için p işlemi dinleyici iş parçacıklarını oluşturur, değil mi?
Bu dinleyici iş parçacıkları süreç adına köle olarak çalışır.
P Harici bir olayın gelmesini beklemek.
Doğru, bu nedenle dinleyici iş parçacıkları kullanarak süreç tüm olayları aynı anda dinleyebilir ve olay geldiğinde,
süreciniz bu olayları işleyebilecek bir konumda olmalıdır.
Doğru.
Bu yüzden bu bölümde alıştırma olarak bir P süreci yazacaktık.
Bu nedenle, kursun bu bölümü için bir gösteri olarak yazacağımız kod,
sorumluluğu harici olayları dinlemek olan köle iş parçacıkları oluşturacak bir süreç
P yazacağımızdır.
Yani kursun bu bölümü için biraz soket programlama deneyimine ihtiyacınız var.
Herhangi bir soket programlama deneyiminiz olmasa bile, yine de kursun bu bölümüne devam etmenizi
tavsiye ederim çünkü soketle ilgili herhangi bir programlama, eğer farkında değilseniz, kodumu kopyalayıp
yapıştırabilirsiniz.
Ancak sonuçta, hiç soket programlama deneyiminiz olmasa bile, dinleyici iş parçacığı kavramını
kullanarak birden fazla harici olayı dinleyebilen bir sürecin veya uygulamanın nasıl tasarlanacağını
anlayacaksınız.
Yani yapacağımız şey, uygulamamızın yanı sıra birden fazla ağ UDP
soketini dinleyeceğimiz bir uygulama uygulayacaktık.
Aynı zamanda, kullanıcı girdisini bekleyeceğiz, değil mi?
Yani bunlar uygulamamızın dinleyeceği iki harici olaydır.
Harici olayı dinleme tekniği, olayın türüne bakılmaksızın aynıdır.
Yani bu örnekte, tanıtım programımızda, çekirdek olaylarını dinlemeyi ya da diğer süreçlerin
olaylarını dinlemeyi ele almadık.
Bunun nedeni, herhangi bir çekirdek programlamasından haberdar olmadığınızı ve süreçler arası iletişimden
haberdar olmadığınızı varsaymamdır.
Doğru.
Ancak dediğim gibi, harici olayları dinleme tekniği olayların türüne bakılmaksızın aynıdır,
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
gelir.
Yani yarın çekirdek olaylarını veya iki süreç arasındaki süreçler arası iletişimi öğrenirseniz,
çekirdek olaylarını ve diğer süreçlerden gelen olayları dinlemek için kursun bu bölümünde
uygulayacağımız aynı tasarımla devam edebilirsiniz.
Doğru.
Uygulayacağımız uygulamanın temel tasarımı değişmeyecek ve kursun bu bölümü için
tüm kodlar bu dizinde bulunabilir.
Değil mi?
Multithreading Bible slash olay dinleyicileri.