Veysel Uğur KIZMAZ

C# Multi Threading

02.05.2012Okunma Sayısı: 15987Kategori: C#.Net
Önceki makalemizde C# ile thread oluşturma işlemini incelemiştik. Şimdi birden fazla threadi aynı anda nasıl çalıştıracağımızı inceleyelim.
Multi-threading olayını incelemeye başlamadan önce, thread oluşturma makalesinin başındaki yazıyı yeniden hatırlamakta fayda var:
Yazdığımız programda bir anda birden fazla işlem yapmak gerekebilir. Örneğin hazırladığımız program bir yandan sistemdeki tüm kullanıcıları listelemeye çalışırken diğer yandan da aynı ekranda yeni kullanıcı eklemeye izin verebilmesi istenebilir. Bu makalemizde bu işlemi nasıl yapacağımızı inceleyelim.
Bilgilendirme: Makale boyunca Windows application üzerinden ilerleyeceğiz. Örnek uygulamamız Console Application  üzerine olacaktır.
Bir windows application oluşturulduktan sonra ilk derlemesiyle beraber bin\debug klasörü içerisine projenin .exe uzantılı dosyasını oluşturur ve bu dosya üzerinden proje istendiği zaman yeniden çalıştırılabilir. Exe dosyaları içerisinde yazılım geliştirilirken istendiği taktirde birden fazla işlemi aynı anda yapmayı sağlayan thread (iplik) adı verilen parçacıklar oluşturulabilir. Exe dosyası işletim sistemi üzerinde çalıştırılırken içerisinde birçok thread oluşturulabilir ve oluşturulan bu threadler exe üzerinde birer iş parçacıkları şeklinde çalıştırılır.
 
Şimdi örneğimizde iki thread oluşturalım ve her threadde birer for döngüsünü 0’dan başlatıp 100000’e kadar ilerletelim. İlk thread için elemanların başına Eleman, ikinci thread için Item yazdıralım ve iki threadin paralel çalışırken ekrana bastığı sonuçları herhangi bir anda alıp gösterelim.
static Thread islem;
static Thread islem2;
static void Main(string[] args)
{
    islem = new Thread(new ThreadStart(Calis));
    islem2 = new Thread(new ThreadStart(Calis2));
    islem.Start();
    islem2.Start();
}
static void Calis()
{
    for (int i = 0; i < 100000; i++)
    {
        Console.WriteLine("Eleman " + i);
    }
}
static void Calis2()
{
    for (int i = 0; i < 100000; i++)
    {
        Console.WriteLine("Item " + i);
    }
}
 
Dikkat edilecek noktalar:
- Thread’de çalıştırılacak metod void olarak tanımlarnır.
- Her thread nesnesi içinde bir ThreadStart nesnesi bulundurur.
- Thread’i başlatmak için Start() metodu kullanılır.
İki threadin beraber çalışmasının nasıl olduğunu bu örnekle gördük. İsterseniz thread sayısını artırabilir ve sonucunu inceleyebilirsiniz.
 
Yepyeni makalelerde görüşmek dileğiyle :)
 
Veysel Uğur KIZMAZ
Bilgisayar Mühendisi
veysel@ugurkizmaz.com
www.ugurkizmaz.com