Evet arkadaşlar, şimdi görev önceliği tarafından ele alınan ikinci ikinci sorunu tartışalım.
En temel düzeyde, bu sorun tartıştığımız ilk sorundan farklı değildir.
Bu nedenle, paket işlemeyi en yüksek öncelikli görev haline getirmek,
gelen ağ paketlerinin zamana bağlı bir şekilde işlenmesine yardımcı olur.
Diyelim ki iki makine var.
Bunlar istemci makinelerdir.
Bu bir sunucu makinesi.
İstemci makine sunucuya bir Http isteği yapar ve
sonuç olarak sunucu Http yanıtı ile geri döner.
İstemcinizin tarayıcınız olduğunu, sunucunuzun ise ağ üzerinde veya belki de dünyanın
herhangi bir yerinde uzaktan bulunan herhangi bir makine olduğunu söyleyebilirsiniz.
İnternetimiz üzerinden iletişim kuruyorlar.
Şimdi diyelim ki bu sunucu olay döngüsüyle çalışacak şekilde tasarlandı.
Ve bu sunucuda, bir A algoritması ile temsil edilen fazladan yapılacak bir şey vardır.
A algoritmasının yüksek öncelikli bir görev olduğunu ve Http istek
paketi işleme görevinin orta öncelikli bir görev olduğunu varsayalım.
Böylece sunucu Http istek paketini Http istek paketi işleme görevi adı verilen bir görev kullanarak işler.
Ve sunucu üzerinde çalışan bu Http istek paketi
işleme görevinin orta öncelikli bir görev olduğunu varsayalım.
Şimdi yine aynı sorunu görelim.
Başlangıç olarak, A algoritmasının bir olay döngüsü iş parçacığı tarafından yürütüldüğünü varsayalım.
Tamam.
Yani bu sıfırıncı saniyedir ve bir saniye sonra A algoritması önceliği alır.
Ancak olay döngüsü kuyruğunda başka bir görev olmadığı için.
Böylece A algoritması yürütülmeye devam eder.
A algoritmasının ikinci taksiti yürütülmesinin ortasındayken,
sunucunun istemciden Http isteği aldığını söyleyelim.
Dolayısıyla bu noktada, olay döngüsü kuyruğunda Http işleme görevi adında bir görev olacaktır.
Tamam.
Böylece bu görev olay döngüsü kuyruğuna yerleştirilecektir.
İkinci saniyenin sonunda, A algoritması önceliği alır.
Ve şimdi bu noktada, olay döngüsü algoritmayı mı, bir görevi mi
yoksa Http işleme görevini mi seçeceği konusunda bir seçim yapmak zorundadır.
Ancak bu algoritmayı varsaydığımız için, bir görevin daha yüksek bir önceliği vardır.
Bu nedenle, olay döngüsü iş parçacığı, A
algoritmasının kalan kısmını yürüterek yürütmeye devam edecektir.
Pekala, bu nedenle işlemeyi durdurma görevleri sunucunun
CPU'sunu yalnızca algoritma yürütülmesini tamamladıktan sonra alacaktır.
Yani çok fazla gecikme olduğunu görebilirsiniz.
Tamam.
Dolayısıyla, Http istek paketinin sunucuya 1,5 saniyede ulaştığını varsayarsak, sunucu
ancak beşinci saniyenin sonunda Http istek paketini işleme şansı bulacaktır.
Böylece istemcinin eninde sonunda gecikmeli yanıtı alacağını görebilirsiniz.
İnternette geziniyorsanız ve internet hızınız oldukça yüksekse, ancak
sunucu uygulaması hatalı olduğu için kendinizi nasıl hissedersiniz?
Bu slaytta tartıştığımız bu nedenden dolayı, tarayıcıda hangi düğmeye
tıklarsanız tıklayın, sunucudan çok gecikmeli bir yanıt aldığınızı algılayacaksınız.
Sinirleneceksin.
Hayal kırıklığına uğrayacaksınız.
İnternetin olmamasından daha kötü olan şey, internetin yavaş olmasıdır.
Tamam.
Böylece istemci sunucudan gecikmeli yanıt alacaktır.
Ve çözüm, Http paket işleme görevini yüksek öncelikli
ve algoritma A'yı daha düşük öncelikli yapmaktır.
Bunu yaparsanız bu sorun çözülecektir.
İstemci tarama hızı hızlanacaktır.
Sunucu, RTP istek paketini gelir gelmez ve
mevcut görev önceliği alır almaz işleyecektir.
Tamam.
Ve soruna gelelim.
Üçüncü olarak, silme görevinin düşük öncelikli bir
görev haline getirilmesi erken silme sorununu çözecektir.
Şimdi bunun tamamen ayrı bir tartışmaya ihtiyacı var ve bu
dersin bir sonraki bölümünde bunu ayrıntılı olarak tartışacağız, görev önceliklendirmenin
bu sorunu da otomatik olarak nasıl ele aldığını göreceğiz.
Ancak bundan önce, asenkron savaşta erken silme
sorununun tam olarak ne olduğunu anlamanız gerekir?