Ana içeriğe atla


C# THERET NEDİR ?

Windows işletim sisiteminin önemli özelliklerinden biri de multithreaded bir mimariye sahip olmasıdır. Peki multithreaded (çok kanallı) program ne demektir ? Genellikle proses ve thread kavramları birbirine karıştırılır. Derlenip çalıştırılan bir programa işletim sistemi içersinde yer alan bir proses denir. Örneğin bir hesap makinası programı ile resim programını ard arda çalıştıralım. Bu iki program işletim sistemi tarafından iki ayrı proses olarak ele alınır. Bu iki program birbirlerinin yaptığı işlemlere müdahale etmez. (İstersek prosesleri birbirlerine müdahale edecek şekilde programlayabiliriz. Genellikle bu istisnayi bir durumdur.) Her proses kendi bellek alanı içersinde koşmaya devam eder. Thread ise bir proses içersinde yer alan ve işlem yapan bir rutindir. Bir proses içersinde birden fazla thread var olabilir. Threadler genellikle bir proses içersinde ayrı kanallarda paralel olarak çalışması istenen metodların yürütülmesinde kullanılır


Threadler sayesinde ayrı metodları aynı anda çalıştırabiliriz. İşletim sistemi her thread’e çalışması için belli bir zaman aralığı verir. Bu zaman aralığı dolduğunda çalışan thread’den çıkılıp, program içersindeki diğer bir metoda veya başka bir thread’e girilir. Bir metod içersinde yapılan iş ne kadar uzun sürüyorsa o metodun bağlı olduğu thread’de o kadar fazla zaman harcanır. Bazen bu süre o kadar fazla olur ki, proses içersindeki başka bir thread’e çalışması için çok az zaman kalır. Başlatılan threadlerin aynı anda senkron bir şekilde çalışabilmesi için .NET’te senkronizasyon teknikleri kullanılır. Burada aynı andalığı (senkronizasyon) biraz açmamız gerekebilir. Örneğin üç tane kanalımız (thread) olsun. Her bir kanalda bir progressbar dolduruluyor olsun.


KOD:

namespace Multi_Threading2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Control.CheckForIllegalCrossThreadCalls = false;
        }
        Thread th01;
        Thread th02;

        private void button1_Click(object sender, EventArgs e)
        {
            th01 = new Thread(Doldur01);

           
            th01.Start();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            th02 = new Thread(Doldur02);

           
            th02.Start();
        }

        private void Doldur01()
        {
            for (int i = 0; i < 1000000001; i++)
            {
                progressBar1.Value = i / 10000000;
            }
        }

        private void Doldur02()
        {
            for (int i = 0; i < 1000000001; i++)
            {
                progressBar2.Value = i / 10000000;
            }
        }

        private void btnBeklet01_Click(object sender, EventArgs e)
        {
            if (th01 != null && th01.IsAlive)
            {
                th01.Suspend();
            }
        }

        private void btnBeklet02_Click(object sender, EventArgs e)
        {
            if (th02 != null && th02.IsAlive)
            {
                th02.Suspend();
            }
        }

        private void btnDevam01_Click(object sender, EventArgs e)
        {
            if (th01 != null && th01.ThreadState == ThreadState.Suspended)
            {
                th01.Resume();
            }
        }

        private void btnDevam02_Click(object sender, EventArgs e)
        {
            if (th02 != null && th02.ThreadState == ThreadState.Suspended)
            {
                th02.Resume();
            }
        }

        private void btnDurdur01_Click(object sender, EventArgs e)
        {
            if (th01 != null && th01.IsAlive)
            {
                if (th01.ThreadState == ThreadState.Suspended)
                {
                    th01.Resume();
                }
                th01.Abort();
                progressBar1.Value = 0;
            }
        }

        private void btnDurdur02_Click(object sender, EventArgs e)
        {
            if (th02 != null && th02.IsAlive)
            {
                if (th02.ThreadState == ThreadState.Suspended)
                {
                    th02.Resume();
                }
                th02.Abort();
                progressBar2.Value = 0;
            }
        }
    }
}



Yorumlar

Bu blogdaki popüler yayınlar

İşletim Sistemleri Arasındaki Farklar

İşletim Sistemleri Arasındaki Farklar İşletim sistemi, bilgisayarda çalışan, bilgisayar donanım kaynaklarını yöneten ve çeşitli uygulama yazılımları için yaygın servisleri sağlayan bir yazılımlar bütünüdür. İşletim sistemi, uygulama kodları genellikle direkt donanım tarafından yürütülmesine rağmen, girdi-çıktı, bellek atama gibi donanım fonksiyonları için uygulama programları ve bilgisayar donanımı arasında aracılık görevi yapar. İşletim sistemleri sadece bilgisayar, video oyun konsolları, cep telefonları ve web sunucularında değil; arabalarda, beyaz eşyalarda hatta kol saatlerinin içinde bile yüklü olabilir. İşletim sistemleri işlevsellerinin genişliği ile değil, donanımı belli bir amaç doğrultusunda programlayabilme nitelikleriyle değerlendirilmelidir. En yaygın kullanılan işletim sistemlerine örnek olarak; Microsoft Windows, Mac OS X, Linux, Android ve iOS örnek verilebilir. DOS İşletim Sistemi Disk Operating System (DOS) bilgisayarlar için ufak ve basit bir işletim sistemi...

ARDUİNO NEDİR ? NE İŞE YARAR ?

ARDUİNO NEDİR ? NE İŞE YARAR ? Arduino içinde hazır olarak mikrodenetleyici, giriş-çıkış pinleri, osilatör vb. elektronik bileşenleri barındıran fiziksel dünyayı algılayan ve kontrol edebilmek için kullanabileceğiniz basit bir bilgisayardır. Basit bir mikroişlemci ve yazılım için bir geliştirme ortamına sahip basit bir fiziksel hesaplama platformudur. Bu geliştirme platformunun içinde değişik Arduino kartlar, birçok farklı işlem yapmaya yarayan eklentiler ve program yazmaya yarayan Arduino IDE bulunur.  Arduino ilk defa 1995 yılında İtalya’nın Evrea şehrindeki Interactive Design Institute kurumunda öğretim üyeliği yapan Massimo Banzi tarafından dile getirildi. Amacı öğrenci projelerinde kullanılmak üzere ucuz, kullanımı kolay ve güvenilir bir kart tasarımı yapmaktı. Bu amacını Malmö Üniversitesinden misafir olarak gelen ve benzer bir amacı olan David Cuartiellese ile ortaklaşa çalışarak Arduino’yu ürettiler.Arduino üzerinde kullanılan eklentilerde değişik şekillerde üretilm...

İşletim Sistemi (Operating System)

İşletim Sistemi (Operating System) • Bilgisayar donanımının doğrudan denetimi ve yönetiminden, temel sistem işlemlerinden ve uygulama yazılımlarını çalıştırmaktan sorumlu olan sistem yazılımıdır. • Bütün diğer yazılımların belleğe, girdi/çıktı aygıtlarına ve kütük sistemine erişimini sağlar. • Birden çok yazılım aynı anda çalışıyorsa, her yazılıma yeterli sistem kaynağını ayırmaktan ve birbirleri ile çakışmamalarını sağlamaktan da sorumludur.                                                                            İşletim Sisteminin Katmanları Çekirdek (Kernel) • İşletim sisteminin ana bileşeni olan çekirdek, uygulama programları ile donanım bileşenleri arasında köprü vazifesi görür. • İşlemcide çalışan proseslerin yönetimi, bellek yönetimi ve Giriş/Çıkış cihazlarının ...