Process
Bilgisayarların yürüttüğü programların çalışabilmesi için belleğe ve çeşitli işletim sistemi kaynaklarına ihtiyacı vardır.
“Process” ihtiyaç duyulan bütün kaynaklarla beraber belleğe yüklenmiş bir programdır. Process’lerin ihtiyaç duyduğu kaynaklar; Registers, Counter ve Stack’tir.
Register: Kayıt, saklama adresi gibi verileri tutabilir.
Counter: Bilgisayarın program esnasında nerede olduğunu inceler.
Her process’in ayrı bir bellek adresi bulunmaktadır. Bunun anlamı da her işlemin birbirinden izole olarak çalıştığıdır. Yani kısaca her Process çalışırken yalnızca kendisini çalışıyor zanneder. Diğer işlemler tarafından paylaşılan verilere doğrudan bir şekilde erişememektedir.
Bu izole olma durumu aslında çok önemlidir. Çünkü izole olması demek bir işlemdeki oluşmuş olan bir sorunun diğer işlemleri de bozmasını ya da zarar vermesini engellemektedir.
Thread
Threadler aynı Process de birden çok işlemin yürütülmesine imkan tanımaktadır. Bir Process çalışmaya başladığı anda direkt olarak bir Thread oluşturulur Bu Thread Main Thread’dir. Bir Process içerisinde birden fazla Thread de bulunabilmektedir. Bu gibi durumlara da Multi – Thread denmektedir. Oluşturulmuş olan bu Threadler aynı network de ya da farklı networklerde işlem yapabilmektedirler.
Threadler iş parçacıklarıdır. Çoklu görevlerde senkronizasyonu sağlamak için kullanılırlar. Threadler aynı anda aynı bölgeye girerse deadloclar meydana gelebilir. Tek Thread kullanıldığı zaman bir işlem yaparken başka herhangi bir işlem yapılamamaktadır. O işlem bitene kadar başka kod çalışamaz. Ama Multithreading ile aynı anda birçok işlem yapılabilmektedir.
Threadlerin kullanımı avantajlı gibi görünse de her zaman avantajlı olmamaktadır. Etkili bir şekilde kullanılmadığı zamanlarda program hızını arttırmak yerine yavaşlatabilir.
Threading işlemlerini yöneten tipler System.Threading kütüphanesindedir.
Start(): Thread sınıfının en temel metodudur. Threadlerin çalışmasını başlatır.
Sleep(): Bu metod ile threadlerin çalışmasını bir süre bekletebilmemiz sağlanmaktadır.
Thread Pool
Thread Poool’un amacı sistemdeki bulunan Threadleri kontrol altında tutabilmek ve yaratılmış olan Threadlerin işi bittikten sonra Threadleri sonlandırmak yerine sonradan tekrar kullanabilmek için bekletmektir. Bir Thread Pool yaratıldığında belli sayıda Thread de yaratır. Yapılacak olan işler gelene kadar yaratılmış olan Threadleri bekletir. Yapılacak olan işler sıraya girdikçe boşta bulunan Thread’lerden birisi uyanıp işi yapar. İşi bitirdikten sonra tekrar bekleme durumuna döner.
Thread Pool yapısı gereği belirli sayıda Thread bulundurmaktadır. Belirli sayıda Thread bulunduracağından dolayı tüm işlerin belirli bir düzen içerisinde ilerlemesi gerektiğinden her şey sıraya koyulur. Bunun için de senkron bir queue yapısı kullanılmaktadır.