C# Yazılım

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.

//Nesne oluşturup ThreadStart(çalıştırılacak methodun adı) methoduyla çalıştırıladcak olan method belirlenir.
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.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
//Thread kullanabilmek için öncelikle aşağıdaki 2 satırı eklemeliyiz.
using System.Threading;
using System;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

//Button Click olayı altında Thread lerimizi oluşturalım ve başlatalım.
static void button1_Click(object sender, EventArgs e)
{
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

Bu yazıyı paylaşın
İlkay Genç
Merhaba, C# ve SQL dersleri hakkında Yazılım Geliştirme Uzmanı olarak sizlerle bildiklerimi bloğumda paylaşıyorum. Sende öğrenmek istiyorsan bloğuma abone ol.
https://www.ilkaygenc.com.tr

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir