İlkay Genç

C# Thread Kullanımı

C# Thread Kullanımı

Thread Nedir ?

Thread, programın kendini senkronizasyonla birden çok iş bölümüne ayrılabilmesinin farklı bir yoludur. Bilgisayarımızda tek işlemci kullanıyorsak thread kullandığımızda uygulamalar zaman dilimleme ile gerçekleştirilir. Yani tek işlemci 2 ya da daha çok Threadler arasında çok hızlı geçiş yapar. Bu olay sanki eş zamanlı olarak işlemlerin gerçekleştirildiği izlenimini yansıtır.

Bilgisayarımızda birden çok işlemci varsa Threadler farklı işlemciler üzeride eş zamanlı olarak çalışabilir. Thread (iplik) kavramı, aynı process ortamında birden çok iş yürütebilme imkanı sağlar. Threading işlemlerini kontrol eden tipler System.Threading kütüphanesidir. Threadin sınıfından birden fazla metodu olduğu için ben en temel Start() ve Sleep() metotlarından bahsedeceğim. Ya da daha derin bi detay istiyorsanız Microsoftun sitesinden buraya tıklayarak bakabilirsiniz

Process ve thread modelinin görünümü
Şekil 1: Process ve iplik modelinin görünümü
Threadlerin senkronizasyonla çalışma şekli
Şekil 2: Threadlerin senkronizasyonla çalışma şekli

Start(): Thread classının en ana metotudur ve threadlerin çalışmasını başlatır.

Thread thread1 = new Thread (new ThreadStart(function1)); 
//thread1 çalıştırılır
thread1.Start();

Sleep(): Sleep metodu kullanarak threadin çalışmasını bir süreliğine bekletebiliriz. Örneğin; belli bir zamana fonksiyonu çalıştırıp örneğin 0.10 saniye dinlendirdikten sonra işleme devam ettirebiliriz ya da başka fonksiyonları çalıştırabiliriz.

thread1.Sleep();

Thread Nasıl Kullanılır ?

using System;
using System.Threading;

namespace ThreadApp
{
    class Program
    {
        static void Main(string[] args)
        {
                Thread thread1 = new Thread(new ThreadStart(ThreadFuncEven));
                Thread thread2 = new Thread(new ThreadStart(ThreadFuncOdd));
                //Threadleri başlatalım bakalım sırasına göremi yoksa paralelmi işleyecek.
                //Sırasına göre işlenseydi önce çift sayılar, sonra tek sayılar basılmalıydı.
                thread1.Start();
                thread2.Start();
                //Output her saniye 2 sayı gelecek şekilde 1 2 3 4 5 ... 100 şeklinde olacaktır.
        }
        static void ThreadFuncEven()
        {
            for (int i = 0; i < 100; i += 2)
            {
                //Her çift Sayı için 1 saniye bekleyelim ve sayıyı yazdıralım
                Thread.Sleep(1000);
                Console.WriteLine(i);
            }
        }
        static void ThreadFuncOdd()
        {
            for (int i = 1; i < 100; i += 2)
            {
                //Her Sayı için bir saniye bekleyelim ve sayıyı yazdırsın.
                Thread.Sleep(1000);
                Console.WriteLine(i);
            }
        }
    }
}

Yazılım eğitimleri ve daha fazlası için: www.ilkaygenc.com.tr

Yorum Yap