Günümüz uygulamalarında performans, hız ve verimlilik oldukça önemlidir. Bu noktada yazılım geliştiriciler olarak sıklıkla karşılaşmakta olduğumuz bir kavram var: Multithreading, yani çoklu iş parçacığı.
Peki nedir bu thread (iş parçacığı)? Ne işe yarar? Gerçek bir örnek üzerinden C# ile nasıl kullanılır?
Thread Nedir?
Thread, yani iş parçacığı, bir programın çalışma yollarından (execution path) biridir. Programlar varsayılan olarak tek bir thread (ana iş parçacığı) üzerinde çalışır. Ancak bazı görevleri eş zamanlı (concurrent) yürütmek istediğimizde, ek thread’ler oluştururuz.
Yani bir program başladığında ilk olarak main thread (ana iş parçacığı) devreye girer. Sonrasında istersek farklı işleri farklı thread’lere dağıtarak programımızı daha verimli hale getirebiliriz.
Uygulamalı Anlatım: Ana Thread’e Erişmek
C#’ta thread ile çalışmak için öncelikle System.Threading namespace’ini dahil ederiz. Daha sonra ana thread’i şöyle yakalayabiliriz:
Thread mainThread = Thread.CurrentThread;
mainThread.Name = “Main Thread”;
Console.WriteLine(mainThread.Name);
Diyelim ki bir uygulamada iki sayaç çalıştırmak istiyoruz:
-
Birincisi 0’dan 10’a kadar sayacak
-
İkincisi ise 10’dan 0’a kadar
Eğer bu iki işi aynı thread’de yaparsak, biri bitmeden diğeri başlayamaz, sıralı bir şekilde çalışır. İlk sayaç biter, sonra diğeri başlar.
Aynı Anda Çalışsınlar mı? İşte Multithreading!
Bu iki işlemi eş zamanlı yapmak istiyorsak, her biri için ayrı bir thread oluşturabiliriz:
Thread thread1 = new Thread(CountDown);
Thread thread2 = new Thread(CountUp);
thread1.Start();
thread2.Start();
Neden Multithreading Kullanılır?
-
Aynı anda birden fazla işi yapmamızı sağlar (örneğin hem ses hem grafik hem kullanıcı girişi).
-
Uygulama donmaz veya yanıt vermez hale gelmez.
-
Özellikle gerçek zamanlı uygulamalar, oyunlar, sunucu işlemleri ve arka plan görevleri için olmazsa olmazdır.
Sonuç
Multithreading, C# programlama dilinde oldukça güçlü ve kullanışlı bir araçtır. Aynı anda birden fazla görevi eş zamanlı yürütmek istiyorsanız, thread’leri kullanarak hem performansı artırabilir hem de kullanıcı deneyimini iyileştirebilirsiniz.