.NET 4, iş parçacığı işlevselliğini soyutlayan sınıflar içeren yeni bir isim alanı olan System.Threading.Tasks içerir. Arka planda ThreadPool kullanın. Bir görev, tamamlanması gereken bir birimin işini temsil eder. Bu birimin çalışması ayrı bir iş parçacığında çalıştırılabilir veya bir görev senkronize olarak başlatılabilir, bu da ana ayar ipliğini beklemeyi gerektirir. Görevleri kullanmak sadece soyutlama katmanı vermakla kalmaz, aynı zamanda altta yatan iş parçacıkları üzerinde de büyük bir kontrol sağlar. Görevler, yapılması gereken işleri planlama konusunda büyük esneklik sunar. Örneğin, sürekli bir görev – bir görev tamamlandıktan sonra hangi işin yapılması gerektiği – tanımlayabilirsiniz. Bu, başarılı bir görev ile başarısız iş arasındaki farkı yaratabilir. Ayrıca, görevler hiyerarşi içinde düzenlenebilir. Örneğin, bir ebeveyn görevi yeni bir alt görev oluşturabilir. Bu bir bağımlılık oluşturur; ebeveyn görevi iptal ederseniz, onun alt görevi de iptal edilir.
Günümüzde görev yürütme yöntemleri popüler ve yüksek performanslı, görev performansının nerede olduğunu bilmiyorum.
Task and Thread'i kendim test ettim ve Task'ın çok yavaş olduğunu, bunun performansı büyük ölçüde etkilediğini hissediyorum, test kodu ise şöyle:
Yöntemi 1000 kez döngüye alırız, ardından yöntem 100 milisaniye boyunca bloklanır ve test sonucu şu şekildedir:
Sonuç:
İş parçacığı yürütmesi 188 milisaniye sürer
Görev yürütme süresi 14.671 milisaniye sürüyor
İkisi arasındaki hız farkı 78 kattır!!
Görev çok yavaş, neden böyle olduğunu bilmiyorum, test kodumda bir sorun mu var, yoksa ne? Umarım bunun neden olduğunu açıklayabilirsin...
|