Asenkron Multithread Programlama

İş Parçacığı (Thread) Nedir?

Bir "thread" (iş parçacığı), bilgisayarın bir işi gerçekleştirmek için kullandığı en küçük işlem birimidir. Bir bilgisayar aslında aynı anda sadece bir iş yapabilir, ancak çok hızlı bir şekilde farklı işler arasında geçiş yaparak sanki aynı anda birden fazla iş yapıyormuş gibi görünür.

Örneğin, Chrome tarayıcısını açtığınızda, işletim sistemi Chrome'u çalıştırmak için bir iş parçacığı oluşturur. İşletim sistemi, birden fazla iş parçacığını kullanarak hangi işlemlerin daha öncelikli olduğunu belirler ve buna göre çalıştırır. Bu, bilgisayarın kaynaklarını daha verimli kullanmasını sağlar ve birden fazla işlemi aynı anda yürütüyormuş gibi hissettirir.

Kısacası, bir iş parçacığı, bilgisayarın bir programı veya işlemi yürütmesi için kullandığı temel yapı taşlarından biridir ve bu sayede aynı anda birden fazla işi kolayca yapabilir gibi görünebilir.

 

·  Tek Thread Programlama: Tek thread programlama, bir programın çalışması sırasında yalnızca tek bir iş parçacığı (thread) kullanması anlamına gelir. Bu durumda, programda yalnızca bir işlem aynı anda yapılabilir. Diğer işlemler ise sırayla gerçekleştirilir. Eğer programda bir işlem çok uzun sürerse, diğer işlemler bu işlem tamamlanana kadar beklemek zorunda kalır.

Örneğin, bir tek thread uygulama düşünün. Bu uygulamada bir dosya okuma işlemi yapılırken, aynı anda başka bir işlem (örneğin, kullanıcıdan giriş almak) gerçekleşemez. İlk işlem bitmeden diğer işlem başlamaz. Bu durum, programın çalışmasını yavaşlatabilir ve kullanıcının beklemesine neden olabilir.

·  Multi-thread Programlama: Multi-thread programlama, bir programın çalışması sırasında birden fazla iş parçacığı kullanması anlamına gelir. Bu sayede, birden fazla işlem aynı anda (paralel olarak) gerçekleştirilebilir. Multi-thread programlama, programın daha verimli ve hızlı çalışmasını sağlar, çünkü bir işlem tamamlanırken diğerleri de arka planda çalışmaya devam edebilir.

Örneğin, bir multi-thread uygulamada bir dosya okuma işlemi yapılırken, aynı anda başka bir thread kullanıcıdan giriş alabilir veya verileri ekrana yazabilir. Böylece, bir işlemin tamamlanmasını beklemek zorunda kalmadan diğer işlemler sürdürülebilir. Bu yöntem, özellikle büyük ve karmaşık işlemler için daha uygun ve hızlıdır.

·  Async Programlama:

Asenkron programlama, bir işlemi başlattıktan sonra, o işlemin tamamlanmasını beklemek yerine bir sonraki işlemi hemen başlatır. İşlem tamamlandığında, sonucun kullanılması gereken yere geri dönerek işlemler arasında kesintisiz bir akış sağlar.

Örnek:

Diyelim ki bir uygulamanın asenkron bir veri okuma işlemi var. Bu durumda:

  1. İlk olarak, veri okuma işlemi başlatılır, ancak program bu işlemin tamamlanmasını beklemeden bir sonraki adıma geçer.
  2. Sonraki işlemler hemen başlar. Bu sırada, veri okuma işlemi arka planda devam eder.
  3. Veri okuma tamamlandığında, sonuç otomatik olarak işlenir ve program bu noktadan devam eder.

Asenkron programlamada, bekleme süreleri sırasında boşa geçen zaman minimuma indirilir. Bu, özellikle kullanıcı etkileşimlerini bekleyen uygulamalar için idealdir.

Asenkron ve Multi-thread Programlama Arasındaki Fark

  • Thread Kullanımı: Multi-thread programlama, her bir işi paralel olarak farklı iş parçacıklarında yürütürken, asenkron programlama tek bir thread üzerinde çalışarak bekleme durumunda olan işlemler için kaynakları boşaltır.
  • Kaynak Kullanımı: Asenkron programlama, tek bir thread kullanarak birden fazla işlemi aynı anda yürütebilir ve bu yüzden kaynakları daha verimli kullanır.

Zamanlama: Multi-thread programlama, genellikle CPU yoğunluklu işlemler için kullanılırken, asenkron programlama özellikle I/O yoğunluklu işlemler için idealdir.

Adil ALATAŞ