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

KONDANSATÖR (KAPASİTÖR) NEDİR ?

KONDANSATÖR (KAPASİTÖR) Kondansatör, elektrik yükünü depolayan devre elemanlarıdır. Depolanan bu yük ihtiyaç olduğunda tekrar kullanılabilir. Kondansatörlerin birçok uygulamada kullanıldığını görmekteyiz . Güç kaynaklarında filtre amacıyla, ses yükseltilmelerinde katmanlar arasında kuplaj sağlamak ve etkin topraklama sağlamak amacıyla sıklıkla kullanılmaktadır .kondansatörün sembollerini ve şekli görünmektedir. KONDANSATÖR'ÜN YAPISI Kapasitörün iki adet iletken arasında yer alan yalıtkan ile oluşturulabileceğini söylemiştik. Yalıtkan kısım boş olabileceği gibi dielektrik özelliğe sahip bir maddeden de oluşabilir (örneğin kağıt, cam, plastik, seramik, mika vs). KONDANSATÖR'ÜN ÇALIŞMA PRENSİBİ Kapasitöre gerilim uygulandığında iletken plakalar birbirlerine göre ters ve eşit değere sahip elektrik yükü ile yüklenirler. Bu durum, plakalar arasında bir elektrik alan oluşmasına sebep olur. Bu iki plaka arasında yalıtkan maddeden dolayı herhangi bir

VERİ TABANI NEDİR ?

VERİ TABANI NEDİR ? Veritabanı basit olarak bilgi depolayan bir yazılımdır. Bir çok yazılım bilgi depolayabilir ama aradaki fark, veritabanın bu bilgiyi verimli ve hizli bir şekilde yönetip degiştirebilmesidir. Veritabanı, bilgi sisteminin kalbidir ve etkili kullanmakla değer kazanır. Bilgiye gerekli oldugu zaman ulaşabilmek esastır. Indeksi olmayan bir kütüphane ve bütün kitapların ayni kapağa sahip oldugunu düşündüğünüzde kütüphane kullanıcılarının ne kadar çok işi olacağını tahmin edersiniz. Bir veritabani bir kütüphanenin mükemmel bir indeks sistemi oldugu gibi, aynı zamanda kütüphanenin kendisidir. İlişkisel veritabanı yönetim sistemleri relational database management systems - rdbms büyük miktarlardaki verilerin güvenli bir şekilde tutulabildiği, bilgilere hızlı erişim imkanlarının saglandığı, bilgilerin bütünlük içerisinde tutulabildigi ve birden fazla kullanıcıya aynı anda bilgiye erişim imkanının sağlandığı programlardır. Oracle veritabani da bir ilişkisel veri tabanı yöne