Şimdi senkron ve asenkron programlamaya bir örnek daha verelim ve
bu durumda senkron ve asenkron iletişim modlarının ne olduğunu tartışacağız.
Dolayısıyla bu örnekler, eşzamanlı ve eşzamansız zamanı gerçek hayatla ilişkilendirmenize yardımcı olacaktır.
Şimdi bir örnek daha verelim: telefonla konuşma eşzamanlı iletişime bir örnektir.
Yani telefonda konuşma yaptığınızda, adımları ve ne duyduğunuzu, diğerinin ne
söylediğini analiz edelim ve karşı taraf cümlesini tamamlayana kadar bekleyin.
Ve biri konuşurken diğeri aktif olarak burada.
Konuşurken ya da buradayken başka bir şey yapmıyorsunuz.
Tamam.
Yani burada asenkron programlamanın belirtilerini görebilirsiniz.
Bu adımları belirli bir sırayla gerçekleştirirsiniz.
Ayrıca engellenme veya bir şeyin tamamlanmasını beklemekten
başka bir şey yapmama unsurlarını da bulursunuz.
Tamam.
İşte bu, eşzamanlı iletişim yöntemine bir örnektir.
Şimdi ABD'nin eşzamanlı iletişim yöntemi örneğine geliyoruz ve bu
da bir sohbet üzerinden e-posta yoluyla iletişimi içeriyor.
Dolayısıyla, e-posta görüşmesi veya sohbet görüşmesinin özelliklerini analiz
ederseniz, başkalarının yanıtını beklemek zorunda olmadığınızı göreceksiniz.
E-postanızı ya da kitlenizi, her ikisinin de almaya hazır durumda olup olmadığını bilmeden gönderiyorsunuz.
Mesajınızı okuyun.
Cevap gelmesini de beklemiyorsunuz.
Tamam.
Sen başka bir şey yap.
Ve cevap geldiği zaman gelir.
Ancak karşı taraftan cevap gelmesini gerçekten beklemiyorsunuz
ve cevabın alındığına dair bildirim alıyorsunuz.
Burada asenkron iletişimin tamamen senkronize
olmayan iletişimle ilgili olduğunu görebilirsiniz.
İki taraf da diğerini umursamıyor.
Taraflardan biri cevap vermez, diğer taraf istediği zaman mesajını gönderir.
Ve burada asenkron iletişimin unsurlarını buluyorsunuz, başkalarının yanıtını
veya başka bir şeyi tamamlamasını beklemek zorunda değilsiniz.
Cevap için beklemenize gerek yok.
Yanıtın alındığına dair bildirim size bildirilir.
Tamam.
Böylece asenkron programlama veya asenkron iletişim modunun unsurlarını görebilirsiniz.
Ve programınızda herhangi bir nedenle blog yazmanız gerekiyorsa bu neredeyse kötü bir yazılım tasarımıdır.
Ancak, engelleme birkaç senaryoda haklı görülebilir.
Örneğin, programınız kullanıcıdan bir girdi istiyor.
Ses programı, kitlelerin soketlere ulaşmasını beklerken select sistem çağrısında bloke olur.
Elbette, yazılımınızın birisinin kendisine kitleler
göndermesini bekliyorsa beklemesi gerektiği açıktır.
Ama aynı zamanda yazılımınız öyle bir konumda olmalı ki tepkisiz kalmamalı.
Tamam.
Son kullanıcı olarak, programınız başka bir makineden ya da başka
bir tehditten bazı kitlelerin gelmesini beklerken programınızla etkileşime girebilmelisiniz.
İnternetten belirli bir dosyayı indirdiğiniz için bilgisayarınız
engellenirse ve işletim sisteminizde bilgisayarınızla başka herhangi
bir etkinlik yapamazsanız nasıl hissedersiniz? Pekâlâ, öyle.
Bu çok sinir bozucu olurdu.
Bu, sadece senkron ve asenkronun ne olduğu hakkında
bir fikir vermek için tartıştığımız bir başka örnektir.
İşleri belirli bir sırayla yapıyorsanız ve belirli
görevlerin tamamlanmasını beklemeniz gerekiyorsa ve yalnızca belirli
görevler tamamlandığında ilerleyebiliyorsanız, bunlar senkron programlama örnekleridir.
Eşzamansızlık, işlerin tamamen senkronize olmayan bir düzende yapılmasını
içerirken, bu dünya doğası gereği son derece eşzamansızdır.
Hayatınızda meydana gelen olaylar eşzamanlıdır.
Yarın ne olacağını asla bilemezdiniz ve yarın ne olursa olsun,
o durumla başa çıkmak için hızlı bir şekilde pozisyon aldınız.
Tamam.
Benzer felsefe yazılım geliştirme dünyası için de geçerlidir.
Yazılım programınız, yazılımın içinde veya dışında üretilen her türlü
olayla başa çıkabiliyorsa, yüksek düzeyde eşzamansız olduğu söylenir.
Örneğin, kullanıcı UI veya komut satırı arayüzü aracılığıyla yazılımla etkileşime giriyor,
ancak aynı zamanda yazılımınız ağ paketlerini de alabilecek bir konumda.
Tamam.
Bu, çeşitli ağ protokollerine örnek olarak yazdığınız soket programlarıdır.