Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Veri paralelliği , bir kaynak koleksiyon veya dizideki öğeler üzerinde aynı işlemin eşzamanlı olarak (paralel olarak) gerçekleştirildiği senaryoları ifade eder. Veri paralel işlemlerinde, birden çok iş parçacığının aynı anda farklı kesimlerde çalışabilmesi için kaynak koleksiyon bölümlenmiştir.
Görev Paralel Kitaplığı (TPL), sınıfı aracılığıyla System.Threading.Tasks.Parallel veri paralelliğini destekler. Bu sınıf, for ve foreach döngülerinin (For
ve For Each
Visual Basic'te) yöntem tabanlı paralel uygulamalarını sunar.
Parallel.For veya Parallel.ForEach döngüsünün mantığını, sıralı bir döngü yazar gibi yazarsınız. İş parçacıkları oluşturmanız veya iş öğelerini kuyruğa almanız gerekmez. Temel döngülerde kilit almanız gerekmez. TPL, tüm alt düzey işleri sizin için işler.
Parallel.For ve Parallel.ForEach kullanımı hakkında ayrıntılı bilgi için Paralel Programlama için Desenler: .NET Framework 4 ile Paralel Desenleri Anlama ve Uygulama belgesini indirin. Aşağıdaki kod örneği basit foreach
bir döngü ve paralel eşdeğerini gösterir.
Uyarı
Bu belgede, TPL'de temsilci tanımlamak için lambda ifadeleri kullanılır. C# veya Visual Basic'teki lambda ifadelerini bilmiyorsanız, PLINQ ve TPL'deki lambda ifadelerine ve'e bakın.
// Sequential version
foreach (var item in sourceCollection)
{
Process(item);
}
// Parallel equivalent
Parallel.ForEach(sourceCollection, item => Process(item));
' Sequential version
For Each item In sourceCollection
Process(item)
Next
' Parallel equivalent
Parallel.ForEach(sourceCollection, Sub(item) Process(item))
Paralel döngü çalıştırıldığında, TPL döngünün aynı anda birden çok bölümde çalışabilmesi için veri kaynağını bölümler. Arka planda, Görev Zamanlayıcı görevi sistem kaynaklarına ve iş yüküne göre bölümler. İş yükü dengesiz hale geldiğinde, mümkünse zamanlayıcı işi birden çok iş parçacığı ve işlemci arasında yeniden dağıtır.
Uyarı
Ayrıca kendi özel bölümleyicinizi veya zamanlayıcınızı da sağlayabilirsiniz. Daha fazla bilgi için bkz. PLINQ ve TPL için Özel Bölümleyiciler ve Görev Zamanlayıcıları.
Parallel.For Hem hem de Parallel.ForEach yöntemleri döngü yürütmeyi durdurmanıza veya kesmenize, diğer iş parçacıklarında döngünün durumunu izlemenize, iş parçacığı yerel durumunu korumanıza, iş parçacığı yerel nesnelerini sonlandırmanıza, eşzamanlılık derecesini denetlemenize ve benzeri işlemler gerçekleştirmenize olanak sağlayan çeşitli aşırı yüklemelere sahiptir. Bu işlevi etkinleştiren yardımcı türler ParallelLoopState, ParallelOptions, ParallelLoopResult, CancellationToken ve CancellationTokenSource türlerini içerir.
Daha fazla bilgi için bkz . Paralel Programlama Desenleri: .NET Framework 4 ile Paralel Desenleri Anlama ve Uygulama.
Bildirim temelli veya sorgu benzeri söz dizimi içeren veri paralelliği PLINQ tarafından desteklenir. Daha fazla bilgi için bkz. Parallel LINQ (PLINQ).
İlgili Konular
Başlık | Açıklama |
---|---|
Nasıl yapılır: Basit bir Paralel.For döngüsü yazma | Herhangi bir For dizi veya dizinlenebilir IEnumerable<T> kaynak koleksiyonu üzerinde döngü yazmayı açıklar. |
Basit Bir Parallel.ForEach Döngüsü Nasıl Yazılır? | Herhangi bir ForEach kaynak koleksiyon üzerinde IEnumerable<T> döngüsü yazmayı açıklar. |
Nasıl yapılır: Parallel.For Döngüsünü Durdurma veya Çıkma | Paralel bir döngünün nasıl durdurulacağını veya sonlandırılacağını ve bu sayede tüm iş parçacıklarının bu eylemden haberdar olacağını açıklar. |
Nasıl Yapılır: Thread-Local Değişkenlerle Parallel.For Döngüsü Yazma | Her iş parçacığının diğer iş parçacıklarına görünmeyen bir özel değişken koruduğu bir For döngünün nasıl yazıldığını ve döngü tamamlandığında tüm iş parçacıklarından sonuçların nasıl eşitleneceğini açıklar. |
Nasıl yapılır: Partition-Local Değişkenleriyle Parallel.ForEach Döngüsü Yazma | Her iş parçacığının diğer iş parçacıklarına görünmeyen bir özel değişken koruduğu bir ForEach döngünün nasıl yazıldığını ve döngü tamamlandığında tüm iş parçacıklarından sonuçların nasıl eşitleneceğini açıklar. |
Nasıl yapılır: Parallel.For veya ForEach Döngüsünü İptal Etme | Bir paralel döngünün System.Threading.CancellationToken kullanarak nasıl iptal edileceğini açıklar |
Nasıl yapılır: Küçük Döngü Gövdelerini Hızlandırma | Döngü gövdesi çok küçük olduğunda yürütmeyi hızlandırmanın bir yolunu açıklar. |
Görev Paralel Kitaplığı (TPL) | Görev Paralel Kitaplığı'na genel bir bakış sağlar. |
Paralel Programlama | .NET Framework'te Paralel Programlamayı tanıtır. |