Öyleyse, çocuklar, şimdi senkronun tam olarak ne anlama geldiğini anlayalım.
Şu ana kadar yazdığınız kod eşzamanlı bir koddur.
Ağaçlarla ilgili kısa programlarımız ya da bağlantı listemiz de bunu yapıyor.
Yapılarımız bilgisayar programcılığıdır şimdiye kadar yazdığınız
tüm o programlarda aslında senkron koddur.
Tek bir ortak nokta vardı ve bu ortak
nokta algoritmik adımların belirli bir otomatik olarak uygulanmasıydı.
Tamam.
Aslında, programın boyutu ne kadar küçükse, programınızın senkronize olma olasılığı da o kadar fazladır.
Şimdi, pastanın hazırlanmasına ilişkin bir Gerçek Dünya örneğini ele alalım.
Yani, pastayı hazırlamak için gereken adımlar nelerdir? Ve
daha sonra pastayı hazırlamanın eşzamanlı yolunu ve aynı
pastayı hazırlamanın eşzamansız yolunun ne olacağını tartışacağız.
Dolayısıyla, pastayı hazırlamak için ihtiyacınız olan ilk şey,
ilk etapta pastayı hazırlamak için ihtiyaç duyacağınız malzemelerdir.
Daha sonra bu malzemeleri uygun oranlarda birbirleriyle karıştıracaksınız.
Ancak bir sonraki adımda, doğru sıcaklığa kadar açık olduğunuzu ısıtacaksınız.
Tamam.
Fırın doğru sıcaklığa ısıtıldıktan sonra keki pişirmeye başlayacaksınız.
Ve son olarak, pastanın hazır olmasını bekleyeceksiniz.
Ve pasta hazır olduğunda, o zaman yersiniz.
Tamam.
Dolayısıyla bu çok basit örnekte ortak olan bir şey var
ve o da adımları belirli bir sırayla gerçekleştirmeniz gerektiğidir.
Pastayı hazırlamak için bu adımlardan herhangi birinin
sırasını değiştiremezsiniz veya sırayı değiştirseniz bile.
Ortak olan bir şey varsa o da iki adımı aynı anda gerçekleştiremeyeceğinizdir.
Burada dikkat etmeniz gereken bir diğer husus da kek hazır olana kadar beklemeniz gerektiğidir.
Yani bu eşzamanlı bir yöntemdir.
Tüm bu adımları uygulayacağınız kısa bir program yazarsanız, bir numaralı adım,
iki numaralı adım, üç numaralı adım, dört numaralı adım, beş numaralı
adım ve altı numaralı adım olarak bölünecek bir algoritma uygulayacaksınız.
Yani, programınız birden altıya kadar iki adımı aynı sırayla yürütecektir.
Ve bu program senkronize bir program olarak adlandırılacaktır.
Şimdi aynı pastayı hazırlamanın eşzamansız halinin ne olacağını görelim.
Elbette, her zamanki gibi degradeleri gerekli oranda birbiriyle karıştıracaksınız.
Ancak malzemeleri karıştırırken, aslında hepsini paralel
olarak doğru sıcaklığa kadar ısıtmanız mümkündür.
Tamam.
Ve or1 doğru sıcaklığa kadar ısıtıldığında, keki yapmaya başlayacaksınız,
böylece sol taraftaki bu adımların ve sağ taraftaki tümünün
doğru sıcaklığa kadar ısıtılmasının paralel olarak yapılabileceğini görebilirsiniz.
Pekala, daha da ileri giderek, pasta hazır olduğunda, hepimizin otomatik
olarak bir olduğumuzu ve pasta piştiğinde alarm verdiğini varsayalım.
Sonra pastayı yemeye başlarsın.
Tamam.
Büyük makineniz size kekinizin piştiğini söyleyen bir alarm
üretir ve kekiniz hazır olduğunda keki yemeye başlarsınız.
Yani senkronize bir şekilde fena değil.
Beklemek yok.
Pastanın hazır olmasını beklemiyorsunuz.
Sen başka bir şey yapıyorsun.
İşte bekliyorsunuz.
Ve bu örnekte, pastanın hazır olmasını beklemiyorsunuz.
Sen başka bir şey yapıyorsun.
Pişirme makineniz size kekin hazır olduğunu bildiren bir alarm verecektir.
Yani yaptığınız iş her neyse, onu yapmayı bırakabilirsiniz.
Geri gel ve pastayı ye.
Tamam.
Dolayısıyla, kek pişirme örneğinin bu eşzamansız yönteminden iki çıkarım.
Birincisi, paralel olarak yapılabilecek adımların gerçekleştirilmesidir.
Paralel olarak gerçekleştirilebilecek bu adımları paralel olarak yapın.
İkinci çıkarım ise bir şeyi engellememeniz veya tamamlanmasını beklememeniz gerektiğidir.
Bu yüzden paralel olarak bağımsız görevler yapın.
Bu asenkron programlamanın kurallarından biridir ve programınız beklememelidir.
Aslında, programınız başka bir şey yapmalı ve programınız, programın başka
bir bölümüne "Hey, sonucu hesapladım, gel ve tüket" diyen bir
sinyal veya bir tür bildirim üretecek bir mekanizmaya sahip olmalıdır.
Tamam.
Dolayısıyla, programınız bir şeyin tamamlanması için bloke
olursa, bu neredeyse kötü bir yazılım tasarımıdır.
Makinenizin veya kaynaklarınızın yetersiz kullanılmasına neden olur.
Ve son olarak, asenkron programlama çoklu iş parçacığı anlamına gelmez, ancak bununla yakından bağlantılıdır.
Tamam.
Bu yüzden bu derste size bir programın nasıl yazılacağını ve
programın farklı bölümleriyle bazı farklı sıraların nasıl yürütüleceğini göstereceğim.
Ancak sonuçta, programda senkronize bir şekilde yazdığınızla aynı sonuca ulaşırsınız.