20 Ağustos 2013 Salı

C# / (CA) Ders 11 - Thread Kullanımı - Konsol Uygulamaları (Consol Application)

For, while gibi döngülerde çok yüksek düzeydeki rakamlarda program sınırsız kaynak tüketimi hedeflemektedir. Bu gibi durumlarda Thread.Sleep(10) kullanarak her işlem arasına 10 ms koyabiliriz. Yani 1 saniyede 100 işleme düşürebiliriz. Böylece hem sonsuz döngüleri çalıştırabilir hemde cpu kullanımından tasarruf ederiz.








Yüksek düzeyde bir işlemi inceleyelim.

Thread kullanılmadan program çalışıyor.

Fakat bilgisayarı yoruşuna bakacak olursak, basit bir işklem olan ekrana 100 milyona kadar sayı basma işlemi cpu'yu sömürüyor. Bu Formlarda ve WPF'te daha fazla cpu tüketimine yol açmaktadır.


Thread kullanımına bakmadan önce kısaca kullanım mantığını anlatalım. 
Thread myThread = new Thread(Deneme);
kısmına göre normal şekilde myThread adında bir Thread yaratıyoruz.
Bu Thread'ı yaratırken Deneme methodunda aktif olacağını söylüyoruz. Aksi taktirde Threadimiz hata verir.
myThread.Start(); ile Thread'ı başlatıyoruz. myThread Denemenin içine doğrudan gidiyor. For'a giriyor. Sleep'i görünce içindeki değere göre programı bekletiyor. 10 ms saniyede 100 işlem demektir. 100 milyon sayıyı Thread ile 1 milyon saniyede ekrana basabiliriz. Thread'sız daha kısa sürebilir ancak Cpu'yu gereksiz yere yormak, programın "patlamasına" yol açabilir. 
Optimum değeri deneme yanılma ile bulabilirsiniz. Ben anlaşılır olması için 10ms kullandım.   
Şimdi Thread kullanalım.

Veriler yine ekrana basılıyor.

Ancak bunu bilgisayarımız hissetmiyor bile :)

Hiç yorum yok :

Yorum Gönder