Ve çocuklar, son olarak birden fazla görev yapmanın üçüncü yolunu tartışalım.
Bu tekilciliktir.
Dolayısıyla Tekillik, bu kısıtlamalara tabi olarak iki veya daha fazla farklı görevin yapılması anlamına gelir.
Yani, bir seferde yalnızca bir görev yapmanıza izin verilir ve görevi tamamlayana kadar yapmakta olduğunuz
görevleri öncelemenize veya durdurmanıza izin verilmez.
Doğru.
Dolayısıyla bu kısıtlamalara maruz kalıyorsanız, görevinizi tekil bir şekilde yapıyorsunuz demektir.
Kuyu kazma örneğimizi genişletelim.
Üç kuyu kazıcısına 100 metre derinlikte kuyu kazma görevi verildiğini düşünün.
Evet, doğru.
Ve onlara bir ayrıcalık tanıyalım ki bu kez de her biri kendi kişisel kuyu açma aracına
sahip olsun.
Değil mi?
Yani bu, onlar için kaynak kıtlığı olmadığı anlamına geliyor.
Şimdi, bu üç kuyu kazıcısına bu kısıtlamaları uygulayalım.
Sadece bir tane.
Kazıcının bir seferde kazmasına izin verilir.
Kuyu kazıcısı kuyusunu kazmaya başladıktan sonra, kuyusu tamamen kazılana kadar kuyu kazmaktan
vazgeçemez.
Doğru.
Dolayısıyla, görev tamamlanana kadar ve yalnızca ilk kuyu kazıcısı görevini tamamladığında, yalnızca bir sonraki
kuyu kazıcısının görevine başlamasına izin verilir.
Sırada bu var.
İşine ancak bir önceki kuyu kazıcı işini tamamladığında başlayın.
Yani bu basitçe, bu vahşi kazıcıların her birinin aslında görevlerini teker teker yaptığı anlamına gelir.
Dolayısıyla, bu örnek üzerinden, üç kuyu kazıcısının da çalışmalarının ilerleme halinde olmadığı sonucuna varabiliriz.
Değil mi?
Kuyu kazıcıları görevi birinin yaptığını söylediğinde, iki ve üçüncü.
Digger daha başlamamıştı bile.
Doğru.
Dolayısıyla bu örnek ilerleme özelliğini göstermemektedir.
Ayrıca, burada dikkat edilmesi gereken bir diğer nokta da, bir veya üç delme aletine sahip olmalarının gerçekten
önemli olmadığıdır.
Bu örnekteki üç kuyu kazıcısına tek bir sondaj aleti ya da üç veya daha fazla sondaj aleti sağlamanız,
her üçünün de harcadığı zamanı iyileştirmeyecek ya da azaltmayacaktır.
Değil mi?
Şimdi tüm bu üç senaryoyu tartıştıktan sonra, her üç senaryoda da aynı miktarda işi tamamlamak için geçen
sürenin bu eşitsizlikle temsil edildiği sonucuna varabilir ve aşağıdaki eşitsizliği yazabiliriz.
Paralellikte geçen süre Tekillikte geçen süreden çok daha azdır ve Tekillikte geçen süre eşzamanlılıkta
geçen süreden daha azdır.
Değil mi?
Yani bu denklemden, eşzamanlılığın görev yapmanın en kötü yolu olduğunu düşünme eğilimindesiniz.
O zaman, eşzamanlılık örneğinde bu kadar kötüyse neden ilk etapta eşzamanlılığa sahip olduğumuzu düşünüyor
olmalısınız, kuyu aslında kuyu kazma aracını aralarında değiştirirken zamanlarını boşa harcıyor.
Doğru.
Eşzamanlı durumda, kuyu kazma aletini bir sonraki kişiye ve bir sonraki kişiye tekrar teslim etmeleri, bir süre kazmaları
ve ardından aleti bir sonraki kişiye teslim etmeleri ve bu şekilde devam etmeleri gerekmektedir.
Dolayısıyla, aracın devir teslimini yapmak çok zaman alır.
Bu araç devri Tekillik örneğinde mevcut değildi ve araç devri paralellikte
de tamamen yoktu.
Doğru.
Bu da bizi eşzamanlılığın size hız kazandırmadığı sonucuna götürüyor.
İlerleme sağlıyor, değil mi?
Bu yüzden hız için eşzamanlılığı seçmeyin.
İlerleme ve paralellik için eşzamanlılığı seçmek, ilerlemenin yanı sıra bir hız sağlar, ancak donanım
kaynakları gerektirir.
Doğru.
Şimdi bu analojiyi bir sonraki ders videosunda Multithreading dünyası ile karşılaştıracağız
ve paralellik tekillik ve eşzamanlılığın Multithreading dünyası ile nasıl eşleştiği sonucuna varmaya çalışacağız.