Parallel.ForEach Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Yinelemelerin paralel olarak çalışabileceği bir foreach (For Each Visual Basic) işlemini yürütür.
Aşırı Yüklemeler
| Name | Description |
|---|---|
| ForEach<TSource,TLocal>(IEnumerable<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>) |
Yinelemelerin paralel olarak çalıştırılabildiği, döngü seçeneklerinin yapılandırılabildiği ve döngünün durumunun izlenip değiştirilebildiği bir IEnumerable üzerinde iş parçacığı yerel verileriyle bir |
| ForEach<TSource,TLocal>(IEnumerable<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>) |
Yinelemelerin paralel olarak çalışabileceği, döngü seçeneklerinin yapılandırılabildiği ve döngü durumunun izlenip işlenebildiği bir IEnumerable üzerinde iş parçacığı yerel verileri ve 64 bit dizinlerle bir |
| ForEach<TSource,TLocal>(Partitioner<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>) |
|
| ForEach<TSource,TLocal>(OrderablePartitioner<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>) |
Yinelemelerin paralel olarak çalışabileceği bir OrderablePartitioner<TSource> üzerinde 64 bit dizinler ve iş parçacığı yerel verileriyle bir |
| ForEach<TSource,TLocal>(IEnumerable<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>) |
|
| ForEach<TSource,TLocal>(IEnumerable<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>) |
Yinelemelerin paralel olarak çalıştırılabildiği ve döngünün durumunun izlenip işlenebildiği bir IEnumerable üzerinde iş parçacığı yerel verileriyle bir |
| ForEach<TSource,TLocal>(Partitioner<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>) |
|
| ForEach<TSource,TLocal>(OrderablePartitioner<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>) |
|
| ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource>) |
Yinelemelerin paralel olarak çalışabileceği ve döngü seçeneklerinin yapılandırılabildiği bir IEnumerable üzerinde bir |
| ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource,ParallelLoopState>) |
Yinelemelerin paralel olarak çalışabileceği, döngü seçeneklerinin yapılandırıldığı ve döngünün durumunun izlenip işlenebildiği bir IEnumerable üzerinde bir |
| ForEach<TSource>(OrderablePartitioner<TSource>, ParallelOptions, Action<TSource,ParallelLoopState,Int64>) |
|
| ForEach<TSource>(Partitioner<TSource>, ParallelOptions, Action<TSource>) |
Yinelemelerin paralel olarak çalışabileceği ve döngü seçeneklerinin yapılandırılabildiği bir Partitioner üzerinde |
| ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource,ParallelLoopState,Int64>) |
Yinelemelerin paralel olarak çalışabileceği, döngü seçeneklerinin yapılandırılabildiği ve döngü durumunun izlenip işlenebildiği bir <2 /> üzerinde 64 bit dizinler içeren bir |
| ForEach<TSource>(Partitioner<TSource>, Action<TSource,ParallelLoopState>) |
|
| ForEach<TSource>(Partitioner<TSource>, Action<TSource>) |
Yinelemelerin paralel olarak çalışabileceği bir Partitioner üzerinde bir |
| ForEach<TSource>(IEnumerable<TSource>, Action<TSource,ParallelLoopState,Int64>) |
Yinelemelerin paralel olarak çalıştırılabildiği ve döngünün durumunun izlenip işlenebildiği bir IEnumerable üzerinde 64 bit dizinler içeren bir |
| ForEach<TSource>(OrderablePartitioner<TSource>, Action<TSource,ParallelLoopState,Int64>) |
|
| ForEach<TSource>(IEnumerable<TSource>, Action<TSource>) |
Yinelemelerin paralel olarak çalışabileceği bir IEnumerable üzerinde bir |
| ForEach<TSource>(Partitioner<TSource>, ParallelOptions, Action<TSource,ParallelLoopState>) |
|
| ForEach<TSource>(IEnumerable<TSource>, Action<TSource,ParallelLoopState>) |
Yinelemelerin paralel olarak çalıştırılabildiği ve döngünün durumunun izlenip işlenebildiği bir IEnumerable üzerinde bir |
ForEach<TSource,TLocal>(IEnumerable<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>)
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
Yinelemelerin paralel olarak çalıştırılabildiği, döngü seçeneklerinin yapılandırılabildiği ve döngünün durumunun izlenip değiştirilebildiği bir IEnumerable üzerinde iş parçacığı yerel verileriyle bir foreach (Visual Basic'de For Each) işlemi yürütür.
public:
generic <typename TSource, typename TLocal>
static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Func<TLocal> ^ localInit, Func<TSource, System::Threading::Tasks::ParallelLoopState ^, TLocal, TLocal> ^ body, Action<TLocal> ^ localFinally);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource,TLocal>(System.Collections.Generic.IEnumerable<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Func<TLocal> localInit, Func<TSource,System.Threading.Tasks.ParallelLoopState,TLocal,TLocal> body, Action<TLocal> localFinally);
static member ForEach : seq<'Source> * System.Threading.Tasks.ParallelOptions * Func<'Local> * Func<'Source, System.Threading.Tasks.ParallelLoopState, 'Local, 'Local> * Action<'Local> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource, TLocal) (source As IEnumerable(Of TSource), parallelOptions As ParallelOptions, localInit As Func(Of TLocal), body As Func(Of TSource, ParallelLoopState, TLocal, TLocal), localFinally As Action(Of TLocal)) As ParallelLoopResult
Tür Parametreleri
- TSource
Kaynaktaki verilerin türü.
- TLocal
İş parçacığı yerel verilerinin türü.
Parametreler
- source
- IEnumerable<TSource>
Numaralandırılabilir bir veri kaynağı.
- parallelOptions
- ParallelOptions
Bu işlemin davranışını yapılandıran bir nesne.
- localInit
- Func<TLocal>
Her görev için yerel verilerin ilk durumunu döndüren işlev temsilcisi.
- body
- Func<TSource,ParallelLoopState,TLocal,TLocal>
Yineleme başına bir kez çağrılan temsilci.
- localFinally
- Action<TLocal>
Her görevin yerel durumu üzerinde son eylemi gerçekleştiren temsilci.
Döndürülenler
Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.
Özel durumlar
source bağımsız değişkenidirnull.
-veya-
parallelOptions bağımsız değişkenidirnull.
-veya-
body bağımsız değişkenidirnull.
-veya-
localInit bağımsız değişkenidirnull.
-veya-
localFinally bağımsız değişkenidirnull.
CancellationToken bağımsız değişkenindeki parallelOptions iptal edilir.
CancellationTokenSource içindeki CancellationToken ile parallelOptions ilişkilendirilmiş olan atılmıştır.
Tüm iş parçacıklarında oluşan tek tek özel durumları içeren özel durum.
Açıklamalar
Temsilci body , numaralandırılabilir içindeki source her öğe için bir kez çağrılır. Aşağıdaki parametrelerle sağlanır: geçerli öğesi, döngüden erken çıkmak için kullanılabilecek bir ParallelLoopState örnek ve aynı iş parçacığında yürütülen yinelemeler arasında paylaşılabilen bazı yerel durum.
Temsilci localInit , döngünün yürütülmesine katılan her görev için bir kez çağrılır ve bu görevlerin her biri için ilk yerel durumu döndürür. Bu ilk durumlar her görevdeki ilk body çağrılara geçirilir. Daha sonra, sonraki her gövde çağrısı, bir sonraki gövde çağırmasına geçirilen büyük olasılıkla değiştirilmiş bir durum değeri döndürür. Son olarak, her görevdeki son gövde çağrısı, temsilciye localFinally geçirilen bir durum değeri döndürür. Temsilci localFinally , her görevin yerel durumunda son eylemi gerçekleştirmek için iş parçacığı başına bir kez çağrılır. Bu temsilci birden çok görevde eşzamanlı olarak çağrılabilir; bu nedenle, paylaşılan değişkenlere erişimi eşitlemeniz gerekir.
Yöntemi Parallel.ForEach , mevcut görevler tamamlandıktan ve yeni görevlerle değiştirildiğinden yürütme ömrü boyunca iş parçacıklarından daha fazla görev kullanabilir. Bu, temel alınan TaskScheduler nesneye döngüye hizmet eden iş parçacıklarını ekleme, değiştirme veya kaldırma şansı verir.
Şunlara uygulanır
ForEach<TSource,TLocal>(IEnumerable<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>)
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
Yinelemelerin paralel olarak çalışabileceği, döngü seçeneklerinin yapılandırılabildiği ve döngü durumunun izlenip işlenebildiği bir IEnumerable üzerinde iş parçacığı yerel verileri ve 64 bit dizinlerle bir foreach (Visual Basic'de For Each) işlemi yürütür.
public:
generic <typename TSource, typename TLocal>
static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Func<TLocal> ^ localInit, Func<TSource, System::Threading::Tasks::ParallelLoopState ^, long, TLocal, TLocal> ^ body, Action<TLocal> ^ localFinally);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource,TLocal>(System.Collections.Generic.IEnumerable<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Func<TLocal> localInit, Func<TSource,System.Threading.Tasks.ParallelLoopState,long,TLocal,TLocal> body, Action<TLocal> localFinally);
static member ForEach : seq<'Source> * System.Threading.Tasks.ParallelOptions * Func<'Local> * Func<'Source, System.Threading.Tasks.ParallelLoopState, int64, 'Local, 'Local> * Action<'Local> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource, TLocal) (source As IEnumerable(Of TSource), parallelOptions As ParallelOptions, localInit As Func(Of TLocal), body As Func(Of TSource, ParallelLoopState, Long, TLocal, TLocal), localFinally As Action(Of TLocal)) As ParallelLoopResult
Tür Parametreleri
- TSource
Kaynaktaki verilerin türü.
- TLocal
İş parçacığı yerel verilerinin türü.
Parametreler
- source
- IEnumerable<TSource>
Numaralandırılabilir bir veri kaynağı.
- parallelOptions
- ParallelOptions
Bu işlemin davranışını yapılandıran bir nesne.
- localInit
- Func<TLocal>
Her görev için yerel verilerin ilk durumunu döndüren işlev temsilcisi.
- body
- Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>
Yineleme başına bir kez çağrılan temsilci.
- localFinally
- Action<TLocal>
Her görevin yerel durumu üzerinde son eylemi gerçekleştiren temsilci.
Döndürülenler
Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.
Özel durumlar
source bağımsız değişkenidirnull.
-veya-
parallelOptions bağımsız değişkenidirnull.
-veya-
body bağımsız değişkenidirnull.
-veya-
localInit bağımsız değişkenidirnull.
-veya-
localFinally bağımsız değişkenidirnull.
CancellationToken bağımsız değişkenindeki parallelOptions iptal edilir.
CancellationTokenSource içindeki CancellationToken ile parallelOptions ilişkilendirilmiş olan atılmıştır.
Tüm iş parçacıklarında oluşan tek tek özel durumları içeren özel durum.
Açıklamalar
Temsilci body , numaralandırılabilir içindeki source her öğe için bir kez çağrılır. Aşağıdaki parametrelerle sağlanır: geçerli öğe, döngüden erken çıkmak için kullanılabilecek bir ParallelLoopState örnek, geçerli öğenin dizini ()Int64 ve aynı iş parçacığında yürütülen yinelemeler arasında paylaşılabilen bazı yerel durum.
Temsilci localInit , döngünün yürütülmesine katılan her görev için bir kez çağrılır ve bu görevlerin her biri için ilk yerel durumu döndürür. Bu ilk durumlar her görevdeki ilk body çağrılara geçirilir. Daha sonra, sonraki her gövde çağrısı, bir sonraki gövde çağırmasına geçirilen büyük olasılıkla değiştirilmiş bir durum değeri döndürür. Son olarak, her görevdeki son gövde çağrısı, temsilciye localFinally geçirilen bir durum değeri döndürür. Temsilci localFinally , her görevin yerel durumunda son eylemi gerçekleştirmek için iş parçacığı başına bir kez çağrılır. Bu temsilci birden çok görevde eşzamanlı olarak çağrılabilir; bu nedenle, paylaşılan değişkenlere erişimi eşitlemeniz gerekir.
Yöntemi Parallel.ForEach , mevcut görevler tamamlandıktan ve yeni görevlerle değiştirildiğinden yürütme ömrü boyunca iş parçacıklarından daha fazla görev kullanabilir. Bu, temel alınan TaskScheduler nesneye döngüye hizmet eden iş parçacıklarını ekleme, değiştirme veya kaldırma şansı verir.
Şunlara uygulanır
ForEach<TSource,TLocal>(Partitioner<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>)
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
foreach (For Each Visual Basic) işlemini, yinelemelerin paralel olarak çalışabileceği, döngü seçeneklerinin yapılandırılabildiği ve döngünün durumunun izlenip değiştirilebildiği bir Partitioner üzerinde iş parçacığı yerel verileriyle yürütür.
public:
generic <typename TSource, typename TLocal>
static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::Partitioner<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Func<TLocal> ^ localInit, Func<TSource, System::Threading::Tasks::ParallelLoopState ^, TLocal, TLocal> ^ body, Action<TLocal> ^ localFinally);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource,TLocal>(System.Collections.Concurrent.Partitioner<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Func<TLocal> localInit, Func<TSource,System.Threading.Tasks.ParallelLoopState,TLocal,TLocal> body, Action<TLocal> localFinally);
static member ForEach : System.Collections.Concurrent.Partitioner<'Source> * System.Threading.Tasks.ParallelOptions * Func<'Local> * Func<'Source, System.Threading.Tasks.ParallelLoopState, 'Local, 'Local> * Action<'Local> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource, TLocal) (source As Partitioner(Of TSource), parallelOptions As ParallelOptions, localInit As Func(Of TLocal), body As Func(Of TSource, ParallelLoopState, TLocal, TLocal), localFinally As Action(Of TLocal)) As ParallelLoopResult
Tür Parametreleri
- TSource
içindeki sourceöğelerin türü.
- TLocal
İş parçacığı yerel verilerinin türü.
Parametreler
- source
- Partitioner<TSource>
Özgün veri kaynağını içeren bölümleyici.
- parallelOptions
- ParallelOptions
Bu işlemin davranışını yapılandıran bir nesne.
- localInit
- Func<TLocal>
Her görev için yerel verilerin ilk durumunu döndüren işlev temsilcisi.
- body
- Func<TSource,ParallelLoopState,TLocal,TLocal>
Yineleme başına bir kez çağrılan temsilci.
- localFinally
- Action<TLocal>
Her görevin yerel durumu üzerinde son eylemi gerçekleştiren temsilci.
Döndürülenler
Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.
Özel durumlar
source bağımsız değişkenidirnull.
-veya-
parallelOptions bağımsız değişkenidirnull.
-veya-
body bağımsız değişkenidirnull.
-veya-
localInit bağımsız değişkenidirnull.
-veya-
localFinally bağımsız değişkenidirnull.
SupportsDynamicPartitions veya bölümleyicideki sourcePartitionerfalse özelliği bölümleri döndürürnull.
Tüm iş parçacıklarında oluşan tek tek özel durumları içeren özel durum.
CancellationToken bağımsız değişkenindeki parallelOptions iptal edilir.
CancellationTokenSource içindeki CancellationToken ile parallelOptions ilişkilendirilmiş olan atılmıştır.
Açıklamalar
Bu aşırı yükleme, varsayılan bölümleme düzenini geçersiz kılmak istediğiniz senaryolar için sağlanır. Örneğin, küçük döngü gövdeleri aralığın bölümlenmesinden yararlanabilir. yöntemi, ForEach özel bölümleyicilerin dinamik bölümlemeyi desteklemesini bekler. Bu aşırı yükleme, statik aralık bölümlemesinden yararlanabilecek küçük döngü gövdelerine sahip senaryolar için sağlanır. Bölümleyiciler dinamik bölümleri desteklemelidir. Daha fazla bilgi için bkz. PLINQ ve TPL için Özel Bölümleyiciler ve Nasıl yapılır: Dinamik Bölümleri Uygulama.
Temsilci localInit , döngünün yürütülmesine katılan her görev için bir kez çağrılır ve bu görevlerin her biri için ilk yerel durumu döndürür. Bu ilk durumlar her görevdeki ilk body çağrılara geçirilir. Daha sonra, sonraki her gövde çağrısı, bir sonraki gövde çağırmasına geçirilen büyük olasılıkla değiştirilmiş bir durum değeri döndürür. Son olarak, her görevdeki son gövde çağrısı, temsilciye localFinally geçirilen bir durum değeri döndürür. Temsilci localFinally , her görevin yerel durumunda son eylemi gerçekleştirmek için görev başına bir kez çağrılır. Bu temsilci birden çok görevde eşzamanlı olarak çağrılabilir; bu nedenle, paylaşılan değişkenlere erişimi eşitlemeniz gerekir.
Yöntemi Parallel.ForEach , mevcut görevler tamamlandıktan ve yeni görevlerle değiştirildiğinden yürütme ömrü boyunca iş parçacıklarından daha fazla görev kullanabilir. Bu, temel alınan TaskScheduler nesneye döngüye hizmet eden iş parçacıklarını ekleme, değiştirme veya kaldırma şansı verir.
Şunlara uygulanır
ForEach<TSource,TLocal>(OrderablePartitioner<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>)
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
Yinelemelerin paralel olarak çalışabileceği bir OrderablePartitioner<TSource> üzerinde 64 bit dizinler ve iş parçacığı yerel verileriyle bir foreach (Visual Basic'de For Each) işlemi yürütür, döngü seçenekleri yapılandırılabilir ve döngünün durumu izlenebilir ve işlenebilir.
public:
generic <typename TSource, typename TLocal>
static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::OrderablePartitioner<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Func<TLocal> ^ localInit, Func<TSource, System::Threading::Tasks::ParallelLoopState ^, long, TLocal, TLocal> ^ body, Action<TLocal> ^ localFinally);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource,TLocal>(System.Collections.Concurrent.OrderablePartitioner<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Func<TLocal> localInit, Func<TSource,System.Threading.Tasks.ParallelLoopState,long,TLocal,TLocal> body, Action<TLocal> localFinally);
static member ForEach : System.Collections.Concurrent.OrderablePartitioner<'Source> * System.Threading.Tasks.ParallelOptions * Func<'Local> * Func<'Source, System.Threading.Tasks.ParallelLoopState, int64, 'Local, 'Local> * Action<'Local> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource, TLocal) (source As OrderablePartitioner(Of TSource), parallelOptions As ParallelOptions, localInit As Func(Of TLocal), body As Func(Of TSource, ParallelLoopState, Long, TLocal, TLocal), localFinally As Action(Of TLocal)) As ParallelLoopResult
Tür Parametreleri
- TSource
içindeki sourceöğelerin türü.
- TLocal
İş parçacığı yerel verilerinin türü.
Parametreler
Özgün veri kaynağını içeren sıralanabilir bölümleyici.
- parallelOptions
- ParallelOptions
Bu işlemin davranışını yapılandıran bir nesne.
- localInit
- Func<TLocal>
Her görev için yerel verilerin ilk durumunu döndüren işlev temsilcisi.
- body
- Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>
Yineleme başına bir kez çağrılan temsilci.
- localFinally
- Action<TLocal>
Her görevin yerel durumu üzerinde son eylemi gerçekleştiren temsilci.
Döndürülenler
Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.
Özel durumlar
source bağımsız değişkenidirnull.
-veya-
parallelOptions bağımsız değişkenidirnull.
-veya-
body bağımsız değişkenidirnull.
-veya-
localInit veya localFinally bağımsız değişkenidirnull.
SupportsDynamicPartitions veya bölümleyicideki sourcePartitionerfalse özelliği bölümleri döndürürnull.
Tüm iş parçacıklarında oluşan tek tek özel durumları içeren özel durum.
CancellationToken bağımsız değişkenindeki parallelOptions iptal edilir.
CancellationTokenSource içindeki CancellationToken ile parallelOptions ilişkilendirilmiş olan atılmıştır.
Açıklamalar
Bu aşırı yükleme, varsayılan bölümleme düzenini geçersiz kılmak istediğiniz senaryolar için sağlanır. Örneğin, küçük döngü gövdeleri aralığın bölümlenmesinden yararlanabilir. yöntemi, ForEach özel bölümleyicilerin dinamik bölümlemeyi desteklemesini bekler. Daha fazla bilgi için bkz. PLINQ ve TPL için Özel Bölümleyiciler ve Nasıl yapılır: Dinamik Bölümleri Uygulama.
Temsilci localInit , döngünün yürütülmesine katılan her görev için bir kez çağrılır ve bu görevlerin her biri için ilk yerel durumu döndürür. Bu ilk durumlar her görevdeki ilk body çağrılara geçirilir. Daha sonra, sonraki her gövde çağrısı, bir sonraki gövde çağırmasına geçirilen büyük olasılıkla değiştirilmiş bir durum değeri döndürür. Son olarak, her iş parçacığındaki son gövde çağrısı, temsilciye localFinally geçirilen bir durum değeri döndürür. Temsilci localFinally , her görevin yerel durumunda son eylemi gerçekleştirmek için görev başına bir kez çağrılır. Bu temsilci birden çok görevde eşzamanlı olarak çağrılabilir; bu nedenle, paylaşılan değişkenlere erişimi eşitlemeniz gerekir.
Yöntemi Parallel.ForEach , mevcut görevler tamamlandıktan ve yeni görevlerle değiştirildiğinden yürütme ömrü boyunca iş parçacıklarından daha fazla görev kullanabilir. Bu, temel alınan TaskScheduler nesneye döngüye hizmet eden iş parçacıklarını ekleme, değiştirme veya kaldırma şansı verir.
Şunlara uygulanır
ForEach<TSource,TLocal>(IEnumerable<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>)
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
foreach (Visual Basic For Each) işlemini yinelemelerin paralel olarak çalışabileceği ve döngünün durumunun izlenip işlenebilir olduğu bir IEnumerable üzerinde iş parçacığı yerel verileriyle yürütür.
public:
generic <typename TSource, typename TLocal>
static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TLocal> ^ localInit, Func<TSource, System::Threading::Tasks::ParallelLoopState ^, TLocal, TLocal> ^ body, Action<TLocal> ^ localFinally);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource,TLocal>(System.Collections.Generic.IEnumerable<TSource> source, Func<TLocal> localInit, Func<TSource,System.Threading.Tasks.ParallelLoopState,TLocal,TLocal> body, Action<TLocal> localFinally);
static member ForEach : seq<'Source> * Func<'Local> * Func<'Source, System.Threading.Tasks.ParallelLoopState, 'Local, 'Local> * Action<'Local> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource, TLocal) (source As IEnumerable(Of TSource), localInit As Func(Of TLocal), body As Func(Of TSource, ParallelLoopState, TLocal, TLocal), localFinally As Action(Of TLocal)) As ParallelLoopResult
Tür Parametreleri
- TSource
Kaynaktaki verilerin türü.
- TLocal
İş parçacığı yerel verilerinin türü.
Parametreler
- source
- IEnumerable<TSource>
Numaralandırılabilir bir veri kaynağı.
- localInit
- Func<TLocal>
Her görev için yerel verilerin ilk durumunu döndüren işlev temsilcisi.
- body
- Func<TSource,ParallelLoopState,TLocal,TLocal>
Yineleme başına bir kez çağrılan temsilci.
- localFinally
- Action<TLocal>
Her görevin yerel durumu üzerinde son eylemi gerçekleştiren temsilci.
Döndürülenler
Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.
Özel durumlar
source bağımsız değişkenidirnull.
-veya-
body bağımsız değişkenidirnull.
-veya-
localInit bağımsız değişkenidirnull.
-veya-
localFinally bağımsız değişkenidirnull.
Tüm iş parçacıklarında oluşan tek tek özel durumları içeren özel durum.
Örnekler
Aşağıdaki örnekte bir yöntemin yerel durumla nasıl kullanılacağı ForEach gösterilmektedir:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
class ForEachWithThreadLocal
{
// Demonstrated features:
// Parallel.ForEach()
// Thread-local state
// Expected results:
// This example sums up the elements of an int[] in parallel.
// Each thread maintains a local sum. When a thread is initialized, that local sum is set to 0.
// On every iteration the current element is added to the local sum.
// When a thread is done, it safely adds its local sum to the global sum.
// After the loop is complete, the global sum is printed out.
// Documentation:
// http://msdn.microsoft.com/library/dd990270(VS.100).aspx
static void Main()
{
// The sum of these elements is 40.
int[] input = { 4, 1, 6, 2, 9, 5, 10, 3 };
int sum = 0;
try
{
Parallel.ForEach(
input, // source collection
() => 0, // thread local initializer
(n, loopState, localSum) => // body
{
localSum += n;
Console.WriteLine("Thread={0}, n={1}, localSum={2}", Thread.CurrentThread.ManagedThreadId, n, localSum);
return localSum;
},
(localSum) => Interlocked.Add(ref sum, localSum) // thread local aggregator
);
Console.WriteLine("\nSum={0}", sum);
}
// No exception is expected in this example, but if one is still thrown from a task,
// it will be wrapped in AggregateException and propagated to the main thread.
catch (AggregateException e)
{
Console.WriteLine("Parallel.ForEach has thrown an exception. THIS WAS NOT EXPECTED.\n{0}", e);
}
}
}
Imports System.Threading
Imports System.Threading.Tasks
Module ForEachDemo
' Demonstrated features:
' Parallel.ForEach()
' Thread-local state
' Expected results:
' This example sums up the elements of an int[] in parallel.
' Each thread maintains a local sum. When a thread is initialized, that local sum is set to 0.
' On every iteration the current element is added to the local sum.
' When a thread is done, it safely adds its local sum to the global sum.
' After the loop is complete, the global sum is printed out.
' Documentation:
' http://msdn.microsoft.com/library/dd990270(VS.100).aspx
Private Sub ForEachDemo()
' The sum of these elements is 40.
Dim input As Integer() = {4, 1, 6, 2, 9, 5, _
10, 3}
Dim sum As Integer = 0
Try
' source collection
Parallel.ForEach(input,
Function()
' thread local initializer
Return 0
End Function,
Function(n, loopState, localSum)
' body
localSum += n
Console.WriteLine("Thread={0}, n={1}, localSum={2}", Thread.CurrentThread.ManagedThreadId, n, localSum)
Return localSum
End Function,
Sub(localSum)
' thread local aggregator
Interlocked.Add(sum, localSum)
End Sub)
Console.WriteLine(vbLf & "Sum={0}", sum)
Catch e As AggregateException
' No exception is expected in this example, but if one is still thrown from a task,
' it will be wrapped in AggregateException and propagated to the main thread.
Console.WriteLine("Parallel.ForEach has thrown an exception. THIS WAS NOT EXPECTED." & vbLf & "{0}", e)
End Try
End Sub
End Module
Açıklamalar
Temsilci body , numaralandırılabilir içindeki source her öğe için bir kez çağrılır. Aşağıdaki parametrelerle sağlanır: geçerli öğesi, döngüden erken çıkmak için kullanılabilecek bir ParallelLoopState örnek ve aynı iş parçacığında yürütülen yinelemeler arasında paylaşılabilen bazı yerel durum.
Temsilci localInit , döngünün yürütülmesine katılan her görev için bir kez çağrılır ve bu görevlerin her biri için ilk yerel durumu döndürür. Bu ilk durumlar her görevdeki ilk body çağrılara geçirilir. Daha sonra, sonraki her gövde çağrısı, bir sonraki gövde çağırmasına geçirilen büyük olasılıkla değiştirilmiş bir durum değeri döndürür. Son olarak, her görevdeki son gövde çağrısı, temsilciye localFinally geçirilen bir durum değeri döndürür. Temsilci localFinally , her görevin yerel durumunda son eylemi gerçekleştirmek için iş parçacığı başına bir kez çağrılır. Bu temsilci birden çok görevde eşzamanlı olarak çağrılabilir; bu nedenle, paylaşılan değişkenlere erişimi eşitlemeniz gerekir.
Yöntemi Parallel.ForEach , mevcut görevler tamamlandıktan ve yeni görevlerle değiştirildiğinden yürütme ömrü boyunca iş parçacıklarından daha fazla görev kullanabilir. Bu, temel alınan TaskScheduler nesneye döngüye hizmet eden iş parçacıklarını ekleme, değiştirme veya kaldırma şansı verir.
Şunlara uygulanır
ForEach<TSource,TLocal>(IEnumerable<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>)
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
Yinelemelerin paralel olarak çalıştırılabildiği ve döngünün durumunun izlenip işlenebildiği bir IEnumerable üzerinde iş parçacığı yerel verileriyle bir foreach (Visual Basic'de For Each) işlemini yürütür.
public:
generic <typename TSource, typename TLocal>
static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TLocal> ^ localInit, Func<TSource, System::Threading::Tasks::ParallelLoopState ^, long, TLocal, TLocal> ^ body, Action<TLocal> ^ localFinally);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource,TLocal>(System.Collections.Generic.IEnumerable<TSource> source, Func<TLocal> localInit, Func<TSource,System.Threading.Tasks.ParallelLoopState,long,TLocal,TLocal> body, Action<TLocal> localFinally);
static member ForEach : seq<'Source> * Func<'Local> * Func<'Source, System.Threading.Tasks.ParallelLoopState, int64, 'Local, 'Local> * Action<'Local> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource, TLocal) (source As IEnumerable(Of TSource), localInit As Func(Of TLocal), body As Func(Of TSource, ParallelLoopState, Long, TLocal, TLocal), localFinally As Action(Of TLocal)) As ParallelLoopResult
Tür Parametreleri
- TSource
Kaynaktaki verilerin türü.
- TLocal
İş parçacığı yerel verilerinin türü.
Parametreler
- source
- IEnumerable<TSource>
Numaralandırılabilir bir veri kaynağı.
- localInit
- Func<TLocal>
Her görev için yerel verilerin ilk durumunu döndüren işlev temsilcisi.
- body
- Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>
Yineleme başına bir kez çağrılan temsilci.
- localFinally
- Action<TLocal>
Her görevin yerel durumu üzerinde son eylemi gerçekleştiren temsilci.
Döndürülenler
Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.
Özel durumlar
source bağımsız değişkenidirnull.
-veya-
body bağımsız değişkenidirnull.
-veya-
localInit bağımsız değişkenidirnull.
-veya-
localFinally bağımsız değişkenidirnull.
Tüm iş parçacıklarında oluşan tek tek özel durumları içeren özel durum.
Açıklamalar
Temsilci body , numaralandırılabilir içindeki source her öğe için bir kez çağrılır. Aşağıdaki parametrelerle sağlanır: geçerli öğe, döngüden erken çıkmak için kullanılabilecek bir ParallelLoopState örnek, geçerli öğenin dizini ()Int64 ve aynı iş parçacığında yürütülen yinelemeler arasında paylaşılabilen bazı yerel durum.
Temsilci localInit , döngünün yürütülmesine katılan her görev için bir kez çağrılır ve bu görevlerin her biri için ilk yerel durumu döndürür. Bu ilk durumlar her görevdeki ilk body çağrılara geçirilir. Daha sonra, sonraki her gövde çağrısı, bir sonraki gövde çağırmasına geçirilen büyük olasılıkla değiştirilmiş bir durum değeri döndürür. Son olarak, her görevdeki son gövde çağrısı, temsilciye localFinally geçirilen bir durum değeri döndürür. Temsilci localFinally , her görevin yerel durumunda son eylemi gerçekleştirmek için görev başına bir kez çağrılır. Bu temsilci birden çok görevde eşzamanlı olarak çağrılabilir; bu nedenle, paylaşılan değişkenlere erişimi eşitlemeniz gerekir.
Yöntemi Parallel.ForEach , mevcut görevler tamamlandıktan ve yeni görevlerle değiştirildiğinden yürütme ömrü boyunca iş parçacıklarından daha fazla görev kullanabilir. Bu, temel alınan TaskScheduler nesneye döngüye hizmet eden iş parçacıklarını ekleme, değiştirme veya kaldırma şansı verir.
Şunlara uygulanır
ForEach<TSource,TLocal>(Partitioner<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>)
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
foreach (Visual Basic'da For Each) işlemini, yinelemelerin paralel olarak çalışabileceği ve döngünün durumunun izlenip işlenebildiği bir Partitioner üzerinde iş parçacığı yerel verileriyle yürütür.
public:
generic <typename TSource, typename TLocal>
static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::Partitioner<TSource> ^ source, Func<TLocal> ^ localInit, Func<TSource, System::Threading::Tasks::ParallelLoopState ^, TLocal, TLocal> ^ body, Action<TLocal> ^ localFinally);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource,TLocal>(System.Collections.Concurrent.Partitioner<TSource> source, Func<TLocal> localInit, Func<TSource,System.Threading.Tasks.ParallelLoopState,TLocal,TLocal> body, Action<TLocal> localFinally);
static member ForEach : System.Collections.Concurrent.Partitioner<'Source> * Func<'Local> * Func<'Source, System.Threading.Tasks.ParallelLoopState, 'Local, 'Local> * Action<'Local> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource, TLocal) (source As Partitioner(Of TSource), localInit As Func(Of TLocal), body As Func(Of TSource, ParallelLoopState, TLocal, TLocal), localFinally As Action(Of TLocal)) As ParallelLoopResult
Tür Parametreleri
- TSource
içindeki sourceöğelerin türü.
- TLocal
İş parçacığı yerel verilerinin türü.
Parametreler
- source
- Partitioner<TSource>
Özgün veri kaynağını içeren bölümleyici.
- localInit
- Func<TLocal>
Her görev için yerel verilerin ilk durumunu döndüren işlev temsilcisi.
- body
- Func<TSource,ParallelLoopState,TLocal,TLocal>
Yineleme başına bir kez çağrılan temsilci.
- localFinally
- Action<TLocal>
Her görevin yerel durumu üzerinde son eylemi gerçekleştiren temsilci.
Döndürülenler
Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.
Özel durumlar
source bağımsız değişkenidirnull.
-veya-
body bağımsız değişkenidirnull.
-veya-
localInit bağımsız değişkenidirnull.
-veya-
localFinally bağımsız değişkenidirnull.
SupportsDynamicPartitions veya bölümleyicideki sourcePartitionerfalse özelliği bölümleri döndürürnull.
Tüm iş parçacıklarında oluşan tek tek özel durumları içeren özel durum.
Açıklamalar
Bu aşırı yükleme, varsayılan bölümleme düzenini geçersiz kılmak istediğiniz senaryolar için sağlanır. Örneğin, küçük döngü gövdeleri aralığın bölümlenmesinden yararlanabilir. yöntemi, ForEach özel bölümleyicilerin dinamik bölümlemeyi desteklemesini bekler. Daha fazla bilgi için bkz. PLINQ ve TPL için Özel Bölümleyiciler ve Nasıl yapılır: Dinamik Bölümleri Uygulama.
Temsilci localInit , döngünün yürütülmesine katılan her iş parçacığı için bir kez çağrılır ve bu görevlerin her biri için ilk yerel durumu döndürür. Bu ilk durumlar her görevdeki ilk body çağrılara geçirilir. Daha sonra, sonraki her gövde çağrısı, bir sonraki gövde çağırmasına geçirilen büyük olasılıkla değiştirilmiş bir durum değeri döndürür. Son olarak, her görevdeki son gövde çağrısı, temsilciye localFinally geçirilen bir durum değeri döndürür. Temsilci localFinally , her görevin yerel durumunda son eylemi gerçekleştirmek için görev başına bir kez çağrılır. Bu temsilci birden çok görevde eşzamanlı olarak çağrılabilir; bu nedenle, paylaşılan değişkenlere erişimi eşitlemeniz gerekir.
Yöntemi Parallel.ForEach , mevcut görevler tamamlandıktan ve yeni görevlerle değiştirildiğinden yürütme ömrü boyunca iş parçacıklarından daha fazla görev kullanabilir. Bu, temel alınan TaskScheduler nesneye döngüye hizmet eden iş parçacıklarını ekleme, değiştirme veya kaldırma şansı verir.
Şunlara uygulanır
ForEach<TSource,TLocal>(OrderablePartitioner<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>)
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
foreach (For Each Visual Basic) işlemini, yinelemelerin paralel olarak çalışabileceği, döngü seçeneklerinin yapılandırılabildiği ve döngünün durumunun izlenip değiştirilebildiği bir OrderablePartitioner<TSource> üzerinde iş parçacığı yerel verileriyle yürütür.
public:
generic <typename TSource, typename TLocal>
static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::OrderablePartitioner<TSource> ^ source, Func<TLocal> ^ localInit, Func<TSource, System::Threading::Tasks::ParallelLoopState ^, long, TLocal, TLocal> ^ body, Action<TLocal> ^ localFinally);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource,TLocal>(System.Collections.Concurrent.OrderablePartitioner<TSource> source, Func<TLocal> localInit, Func<TSource,System.Threading.Tasks.ParallelLoopState,long,TLocal,TLocal> body, Action<TLocal> localFinally);
static member ForEach : System.Collections.Concurrent.OrderablePartitioner<'Source> * Func<'Local> * Func<'Source, System.Threading.Tasks.ParallelLoopState, int64, 'Local, 'Local> * Action<'Local> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource, TLocal) (source As OrderablePartitioner(Of TSource), localInit As Func(Of TLocal), body As Func(Of TSource, ParallelLoopState, Long, TLocal, TLocal), localFinally As Action(Of TLocal)) As ParallelLoopResult
Tür Parametreleri
- TSource
içindeki sourceöğelerin türü.
- TLocal
İş parçacığı yerel verilerinin türü.
Parametreler
Özgün veri kaynağını içeren sıralanabilir bölümleyici.
- localInit
- Func<TLocal>
Her görev için yerel verilerin ilk durumunu döndüren işlev temsilcisi.
- body
- Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>
Yineleme başına bir kez çağrılan temsilci.
- localFinally
- Action<TLocal>
Her görevin yerel durumu üzerinde son eylemi gerçekleştiren temsilci.
Döndürülenler
Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.
Özel durumlar
source bağımsız değişkenidirnull.
-veya-
body bağımsız değişkenidirnull.
-veya-
localInit bağımsız değişkenidirnull.
-veya-
localFinally bağımsız değişkenidirnull.
SupportsDynamicPartitions veya bölümleyicideki sourcePartitionerfalse özelliği bölümleri döndürürnull.
Tüm iş parçacıklarında oluşan tek tek özel durumları içeren özel durum.
Açıklamalar
Bu aşırı yükleme, varsayılan bölümleme düzenini geçersiz kılmak istediğiniz senaryolar için sağlanır. Örneğin, küçük döngü gövdeleri aralığın bölümlenmesinden yararlanabilir. yöntemi, ForEach özel bölümleyicilerin dinamik bölümlemeyi desteklemesini bekler. Daha fazla bilgi için bkz. PLINQ ve TPL için Özel Bölümleyiciler ve Nasıl yapılır: Dinamik Bölümleri Uygulama.
Temsilci localInit , döngünün yürütülmesine katılan her görev için bir kez çağrılır ve bu görevlerin her biri için ilk yerel durumu döndürür. Bu ilk durumlar her görevdeki ilk body çağrılara geçirilir. Daha sonra, sonraki her gövde çağrısı, bir sonraki gövde çağırmasına geçirilen büyük olasılıkla değiştirilmiş bir durum değeri döndürür. Son olarak, her görevdeki son gövde çağrısı, temsilciye localFinally geçirilen bir durum değeri döndürür. Temsilci localFinally , her görevin yerel durumunda son eylemi gerçekleştirmek için görev başına bir kez çağrılır. Bu temsilci birden çok görevde eşzamanlı olarak çağrılabilir; bu nedenle, paylaşılan değişkenlere erişimi eşitlemeniz gerekir.
Yöntemi Parallel.ForEach , mevcut görevler tamamlandıktan ve yeni görevlerle değiştirildiğinden yürütme ömrü boyunca iş parçacıklarından daha fazla görev kullanabilir. Bu, temel alınan TaskScheduler nesneye döngüye hizmet eden iş parçacıklarını ekleme, değiştirme veya kaldırma şansı verir.
Şunlara uygulanır
ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource>)
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
Yinelemelerin paralel olarak çalışabileceği ve döngü seçeneklerinin yapılandırılabildiği bir IEnumerable üzerinde bir foreach (Visual Basic'de For Each) işlemi yürütür.
public:
generic <typename TSource>
static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Action<TSource> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource>(System.Collections.Generic.IEnumerable<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Action<TSource> body);
static member ForEach : seq<'Source> * System.Threading.Tasks.ParallelOptions * Action<'Source> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As IEnumerable(Of TSource), parallelOptions As ParallelOptions, body As Action(Of TSource)) As ParallelLoopResult
Tür Parametreleri
- TSource
Kaynaktaki verilerin türü.
Parametreler
- source
- IEnumerable<TSource>
Numaralandırılabilir bir veri kaynağı.
- parallelOptions
- ParallelOptions
Bu işlemin davranışını yapılandıran bir nesne.
- body
- Action<TSource>
Yineleme başına bir kez çağrılan temsilci.
Döndürülenler
Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.
Özel durumlar
CancellationToken bağımsız değişkenindeki parallelOptions iptal edildi
source bağımsız değişkenidirnull.
-veya-
parallelOptions bağımsız değişkenidirnull.
-veya-
body bağımsız değişkenidirnull.
Tüm iş parçacıklarında oluşan tek tek özel durumları içeren özel durum.
CancellationTokenSource içindeki CancellationToken ile parallelOptions ilişkilendirilmiş olan atılmıştır.
Açıklamalar
Temsilci body , numaralandırılabilir içindeki source her öğe için bir kez çağrılır. Geçerli öğe parametre olarak sağlanır.
Şunlara uygulanır
ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource,ParallelLoopState>)
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
Yinelemelerin paralel olarak çalışabileceği, döngü seçeneklerinin yapılandırıldığı ve döngünün durumunun izlenip işlenebildiği bir IEnumerable üzerinde bir foreach (Visual Basic içinde For Each) işlemi yürütür.
public:
generic <typename TSource>
static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Action<TSource, System::Threading::Tasks::ParallelLoopState ^> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource>(System.Collections.Generic.IEnumerable<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Action<TSource,System.Threading.Tasks.ParallelLoopState> body);
static member ForEach : seq<'Source> * System.Threading.Tasks.ParallelOptions * Action<'Source, System.Threading.Tasks.ParallelLoopState> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As IEnumerable(Of TSource), parallelOptions As ParallelOptions, body As Action(Of TSource, ParallelLoopState)) As ParallelLoopResult
Tür Parametreleri
- TSource
Kaynaktaki verilerin türü.
Parametreler
- source
- IEnumerable<TSource>
Numaralandırılabilir bir veri kaynağı.
- parallelOptions
- ParallelOptions
Bu işlemin davranışını yapılandıran bir nesne.
- body
- Action<TSource,ParallelLoopState>
Yineleme başına bir kez çağrılan temsilci.
Döndürülenler
Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.
Özel durumlar
CancellationToken bağımsız değişkenindeki parallelOptions iptal edildi
source bağımsız değişkenidirnull.
-veya-
parallelOptions bağımsız değişkenidirnull.
-veya-
body bağımsız değişkenidirnull.
Tüm iş parçacıklarında oluşan tek tek özel durumları içeren özel durum.
CancellationTokenSource içindeki CancellationToken ile parallelOptions ilişkilendirilmiş olan atılmıştır.
Açıklamalar
Temsilci body , numaralandırılabilir içindeki source her öğe için bir kez çağrılır. Aşağıdaki parametrelerle sağlanır: geçerli öğe ve döngüden erken çıkmak için kullanılabilecek bir ParallelLoopState örnek.
Şunlara uygulanır
ForEach<TSource>(OrderablePartitioner<TSource>, ParallelOptions, Action<TSource,ParallelLoopState,Int64>)
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
foreach (For Each Visual Basic) işlemini, yinelemelerin paralel olarak çalışabileceği, döngü seçeneklerinin yapılandırılabildiği ve döngünün durumunun izlenip değiştirilebildiği bir OrderablePartitioner<TSource> yürütür.
public:
generic <typename TSource>
static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::OrderablePartitioner<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Action<TSource, System::Threading::Tasks::ParallelLoopState ^, long> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource>(System.Collections.Concurrent.OrderablePartitioner<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Action<TSource,System.Threading.Tasks.ParallelLoopState,long> body);
static member ForEach : System.Collections.Concurrent.OrderablePartitioner<'Source> * System.Threading.Tasks.ParallelOptions * Action<'Source, System.Threading.Tasks.ParallelLoopState, int64> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As OrderablePartitioner(Of TSource), parallelOptions As ParallelOptions, body As Action(Of TSource, ParallelLoopState, Long)) As ParallelLoopResult
Tür Parametreleri
- TSource
içindeki sourceöğelerin türü.
Parametreler
Özgün veri kaynağını içeren sıralanabilir bölümleyici.
- parallelOptions
- ParallelOptions
Bu işlemin davranışını yapılandıran bir nesne.
- body
- Action<TSource,ParallelLoopState,Int64>
Yineleme başına bir kez çağrılan temsilci.
Döndürülenler
Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.
Özel durumlar
CancellationToken bağımsız değişkenindeki parallelOptions iptal edildi
source bağımsız değişkenidirnull.
-veya-
parallelOptions bağımsız değişkenidirnull.
-veya-
body bağımsız değişkenidirnull.
CancellationTokenSource içindeki CancellationToken ile parallelOptions ilişkilendirilmiş olan atılmıştır.
SupportsDynamicPartitions Sıralanabilir bölümleyicideki source özelliği döndürürfalse.
-veya-
KeysNormalized Sıralanabilir bölümleyicideki source özelliği döndürürfalse.
-veya-
Sıralanabilir bölümleyicideki herhangi bir yöntem döndürdüğünüzde sourcenulloluşan özel durum.
Belirtilen temsilcilerden birinden oluşan bir özel durum içermesi için atılan özel durum.
Açıklamalar
Bu aşırı yükleme, varsayılan bölümleme düzenini geçersiz kılmak istediğiniz senaryolar için sağlanır. Örneğin, küçük döngü gövdeleri aralığın bölümlenmesinden yararlanabilir. yöntemi, Parallel.ForEach özel bölümleyicilerin dinamik bölümlemeyi desteklemesini bekler. Daha fazla bilgi için bkz. PLINQ ve TPL için Özel Bölümleyiciler ve Nasıl yapılır: Dinamik Bölümleri Uygulama.
Şunlara uygulanır
ForEach<TSource>(Partitioner<TSource>, ParallelOptions, Action<TSource>)
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
Yinelemelerin paralel olarak çalışabileceği ve döngü seçeneklerinin yapılandırılabildiği bir Partitioner üzerinde foreach (Visual Basic'da For Each) işlemi yürütür.
public:
generic <typename TSource>
static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::Partitioner<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Action<TSource> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource>(System.Collections.Concurrent.Partitioner<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Action<TSource> body);
static member ForEach : System.Collections.Concurrent.Partitioner<'Source> * System.Threading.Tasks.ParallelOptions * Action<'Source> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As Partitioner(Of TSource), parallelOptions As ParallelOptions, body As Action(Of TSource)) As ParallelLoopResult
Tür Parametreleri
- TSource
içindeki sourceöğelerin türü.
Parametreler
- source
- Partitioner<TSource>
Özgün veri kaynağını içeren bölümleyici.
- parallelOptions
- ParallelOptions
Bu işlemin davranışını yapılandıran bir nesne.
- body
- Action<TSource>
Yineleme başına bir kez çağrılan temsilci.
Döndürülenler
Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.
Özel durumlar
CancellationToken bağımsız değişkenindeki parallelOptions iptal edilir.
CancellationTokenSource içindeki CancellationToken ile parallelOptions ilişkilendirilmiş olan atılmıştır.
source bağımsız değişkenidirnull.
-veya-
parallelOptions bağımsız değişkenidirnull.
-veya-
body bağımsız değişkenidirnull.
SupportsDynamicPartitions Bölümleyicideki source özelliği döndürürfalse.
-veya-
Bölümleyicideki herhangi bir yöntem döndürdüğünüzde sourcenulloluşan özel durum.
Belirtilen temsilcilerden birinden oluşan bir özel durum içermesi için atılan özel durum.
Açıklamalar
Bu aşırı yükleme, varsayılan bölümleme düzenini geçersiz kılmak istediğiniz senaryolar için sağlanır. Örneğin, küçük döngü gövdeleri aralığın bölümlenmesinden yararlanabilir. yöntemi, Parallel.ForEach özel bölümleyicilerin dinamik bölümlemeyi desteklemesini bekler. Daha fazla bilgi için bkz. PLINQ ve TPL için Özel Bölümleyiciler ve Nasıl yapılır: Dinamik Bölümleri Uygulama.
Şunlara uygulanır
ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource,ParallelLoopState,Int64>)
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
Yinelemelerin paralel olarak çalışabileceği, döngü seçeneklerinin yapılandırılabildiği ve döngü durumunun izlenip işlenebildiği bir <2 /> üzerinde 64 bit dizinler içeren bir
public:
generic <typename TSource>
static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Action<TSource, System::Threading::Tasks::ParallelLoopState ^, long> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource>(System.Collections.Generic.IEnumerable<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Action<TSource,System.Threading.Tasks.ParallelLoopState,long> body);
static member ForEach : seq<'Source> * System.Threading.Tasks.ParallelOptions * Action<'Source, System.Threading.Tasks.ParallelLoopState, int64> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As IEnumerable(Of TSource), parallelOptions As ParallelOptions, body As Action(Of TSource, ParallelLoopState, Long)) As ParallelLoopResult
Tür Parametreleri
- TSource
Kaynaktaki verilerin türü.
Parametreler
- source
- IEnumerable<TSource>
Numaralandırılabilir bir veri kaynağı.
- parallelOptions
- ParallelOptions
Bu işlemin davranışını yapılandıran bir nesne.
- body
- Action<TSource,ParallelLoopState,Int64>
Yineleme başına bir kez çağrılan temsilci.
Döndürülenler
Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.
Özel durumlar
CancellationToken bağımsız değişkenindeki parallelOptions iptal edildi
source bağımsız değişkenidirnull.
-veya-
parallelOptions bağımsız değişkenidirnull.
-veya-
body bağımsız değişkenidirnull.
Tüm iş parçacıklarında oluşan tek tek özel durumları içeren özel durum.
CancellationTokenSource içindeki CancellationToken ile parallelOptions ilişkilendirilmiş olan atılmıştır.
Açıklamalar
Temsilci body , numaralandırılabilir içindeki source her öğe için bir kez çağrılır. Aşağıdaki parametrelerle sağlanır: geçerli öğe, döngüden erken çıkmak için kullanılabilecek bir ParallelLoopState örnek ve geçerli öğenin dizini (Int64).
Şunlara uygulanır
ForEach<TSource>(Partitioner<TSource>, Action<TSource,ParallelLoopState>)
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
foreach (Visual Basic'da For Each) işlemini, yinelemelerin paralel olarak çalışabileceği ve döngünün durumunun izlenip değiştirilebildiği bir Partitioner yürütür.
public:
generic <typename TSource>
static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::Partitioner<TSource> ^ source, Action<TSource, System::Threading::Tasks::ParallelLoopState ^> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource>(System.Collections.Concurrent.Partitioner<TSource> source, Action<TSource,System.Threading.Tasks.ParallelLoopState> body);
static member ForEach : System.Collections.Concurrent.Partitioner<'Source> * Action<'Source, System.Threading.Tasks.ParallelLoopState> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As Partitioner(Of TSource), body As Action(Of TSource, ParallelLoopState)) As ParallelLoopResult
Tür Parametreleri
- TSource
içindeki sourceöğelerin türü.
Parametreler
- source
- Partitioner<TSource>
Özgün veri kaynağını içeren bölümleyici.
- body
- Action<TSource,ParallelLoopState>
Yineleme başına bir kez çağrılan temsilci.
Döndürülenler
Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.
Özel durumlar
SupportsDynamicPartitions Bölümleyicideki source özelliği döndürürfalse.
-veya-
Bölümleyicideki source bir yöntem döndürür null.
-veya-
Bölümleyicideki GetPartitions(Int32)source yöntemi doğru sayıda bölüm döndürmez.
Belirtilen temsilcilerden birinden oluşan bir özel durum içermesi için atılan özel durum.
Açıklamalar
Bu aşırı yükleme, varsayılan bölümleme düzenini geçersiz kılmak istediğiniz senaryolar için sağlanır. Örneğin, küçük döngü gövdeleri aralığın bölümlenmesinden yararlanabilir. yöntemi, Parallel.ForEach özel bölümleyicilerin dinamik bölümlemeyi desteklemesini bekler. Daha fazla bilgi için bkz. PLINQ ve TPL için Özel Bölümleyiciler ve Nasıl yapılır: Dinamik Bölümleri Uygulama.
Şunlara uygulanır
ForEach<TSource>(Partitioner<TSource>, Action<TSource>)
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
Yinelemelerin paralel olarak çalışabileceği bir Partitioner üzerinde bir foreach (Visual Basic'da For Each) işlemi yürütür.
public:
generic <typename TSource>
static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::Partitioner<TSource> ^ source, Action<TSource> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource>(System.Collections.Concurrent.Partitioner<TSource> source, Action<TSource> body);
static member ForEach : System.Collections.Concurrent.Partitioner<'Source> * Action<'Source> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As Partitioner(Of TSource), body As Action(Of TSource)) As ParallelLoopResult
Tür Parametreleri
- TSource
içindeki sourceöğelerin türü.
Parametreler
- source
- Partitioner<TSource>
Özgün veri kaynağını içeren bölümleyici.
- body
- Action<TSource>
Yineleme başına bir kez çağrılan temsilci.
Döndürülenler
Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.
Özel durumlar
SupportsDynamicPartitions Bölümleyicideki source özelliği döndürürfalse.
-veya-
Bölümleyicideki herhangi bir yöntem döndürdüğünüzde sourcenulloluşan özel durum.
-veya-
Bölümleyicideki GetPartitions(Int32)source yöntemi doğru sayıda bölüm döndürmez.
Belirtilen temsilcilerden birinden oluşan bir özel durum içermesi için atılan özel durum.
Örnekler
Aşağıdaki örnekte ile Parallel.ForEachkullanmak üzere bir aralık bölümleyicinin nasıl uygulanacakları gösterilmektedir:
using System;
using System.Collections.Concurrent;
using System.Diagnostics;
using System.Threading;
using System.Threading.Tasks;
class RangePartitionerDemo
{
static void Main()
{
Stopwatch sw = null;
long sum = 0;
long SUMTOP = 10000000;
// Try sequential for
sw = Stopwatch.StartNew();
for (long i = 0; i < SUMTOP; i++) sum += i;
sw.Stop();
Console.WriteLine("sequential for result = {0}, time = {1} ms", sum, sw.ElapsedMilliseconds);
// Try parallel for -- this is slow!
//sum = 0;
//sw = Stopwatch.StartNew();
//Parallel.For(0L, SUMTOP, (item) => Interlocked.Add(ref sum, item));
//sw.Stop();
//Console.WriteLine("parallel for result = {0}, time = {1} ms", sum, sw.ElapsedMilliseconds);
// Try parallel for with locals
sum = 0;
sw = Stopwatch.StartNew();
Parallel.For(0L, SUMTOP, () => 0L, (item, state, prevLocal) => prevLocal + item, local => Interlocked.Add(ref sum, local));
sw.Stop();
Console.WriteLine("parallel for w/locals result = {0}, time = {1} ms", sum, sw.ElapsedMilliseconds);
// Try range partitioner
sum = 0;
sw = Stopwatch.StartNew();
Parallel.ForEach(Partitioner.Create(0L, SUMTOP), (range) =>
{
long local = 0;
for (long i = range.Item1; i < range.Item2; i++) local += i;
Interlocked.Add(ref sum, local);
});
sw.Stop();
Console.WriteLine("range partitioner result = {0}, time = {1} ms", sum, sw.ElapsedMilliseconds);
}
}
Imports System.Collections.Concurrent
Imports System.Threading
Imports System.Threading.Tasks
Module RangePartitionerDemo
Sub Main()
Dim sw As Stopwatch = Nothing
Dim sum As Long = 0
Dim SUMTOP As Long = 10000000
' Try sequential for
sw = Stopwatch.StartNew()
For i As Long = 0 To SUMTOP - 1
sum += i
Next
sw.Stop()
Console.WriteLine("sequential for result = {0}, time = {1} ms", sum, sw.ElapsedMilliseconds)
' Try parallel for with locals
sum = 0
sw = Stopwatch.StartNew()
Parallel.For(0L, SUMTOP, Function() 0L, Function(item, state, prevLocal) prevLocal + item, Function(local) Interlocked.Add(sum, local))
sw.Stop()
Console.WriteLine("parallel for w/locals result = {0}, time = {1} ms", sum, sw.ElapsedMilliseconds)
' Try range partitioner
sum = 0
sw = Stopwatch.StartNew()
Parallel.ForEach(Partitioner.Create(0L, SUMTOP),
Sub(range)
Dim local As Long = 0
For i As Long = range.Item1 To range.Item2 - 1
local += i
Next
Interlocked.Add(sum, local)
End Sub)
sw.Stop()
Console.WriteLine("range partitioner result = {0}, time = {1} ms", sum, sw.ElapsedMilliseconds)
End Sub
End Module
Açıklamalar
Bu aşırı yükleme, varsayılan bölümleme düzenini geçersiz kılmak istediğiniz senaryolar için sağlanır. Örneğin, küçük döngü gövdeleri aralığın bölümlenmesinden yararlanabilir. yöntemi, Parallel.ForEach özel bölümleyicilerin dinamik bölümlemeyi desteklemesini bekler. Daha fazla bilgi için bkz. PLINQ ve TPL için Özel Bölümleyiciler ve Nasıl yapılır: Dinamik Bölümleri Uygulama.
Şunlara uygulanır
ForEach<TSource>(IEnumerable<TSource>, Action<TSource,ParallelLoopState,Int64>)
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
Yinelemelerin paralel olarak çalıştırılabildiği ve döngünün durumunun izlenip işlenebildiği bir IEnumerable üzerinde 64 bit dizinler içeren bir foreach (For Each Visual Basic) işlemi yürütür.
public:
generic <typename TSource>
static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, Action<TSource, System::Threading::Tasks::ParallelLoopState ^, long> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource>(System.Collections.Generic.IEnumerable<TSource> source, Action<TSource,System.Threading.Tasks.ParallelLoopState,long> body);
static member ForEach : seq<'Source> * Action<'Source, System.Threading.Tasks.ParallelLoopState, int64> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As IEnumerable(Of TSource), body As Action(Of TSource, ParallelLoopState, Long)) As ParallelLoopResult
Tür Parametreleri
- TSource
Kaynaktaki verilerin türü.
Parametreler
- source
- IEnumerable<TSource>
Numaralandırılabilir bir veri kaynağı.
- body
- Action<TSource,ParallelLoopState,Int64>
Yineleme başına bir kez çağrılan temsilci.
Döndürülenler
Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.
Özel durumlar
Tüm iş parçacıklarında oluşan tek tek özel durumları içeren özel durum.
Açıklamalar
Temsilci body , numaralandırılabilir içindeki source her öğe için bir kez çağrılır. Aşağıdaki parametrelerle sağlanır: geçerli öğe, döngüden erken çıkmak için kullanılabilecek bir ParallelLoopState örnek ve geçerli öğenin dizini (Int64).
Şunlara uygulanır
ForEach<TSource>(OrderablePartitioner<TSource>, Action<TSource,ParallelLoopState,Int64>)
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
foreach (Visual Basic'da For Each) işlemini, yinelemelerin paralel olarak çalıştırılabildiği ve döngünün durumunun izlenip işlenebildiği bir OrderablePartitioner<TSource> yürütür.
public:
generic <typename TSource>
static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::OrderablePartitioner<TSource> ^ source, Action<TSource, System::Threading::Tasks::ParallelLoopState ^, long> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource>(System.Collections.Concurrent.OrderablePartitioner<TSource> source, Action<TSource,System.Threading.Tasks.ParallelLoopState,long> body);
static member ForEach : System.Collections.Concurrent.OrderablePartitioner<'Source> * Action<'Source, System.Threading.Tasks.ParallelLoopState, int64> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As OrderablePartitioner(Of TSource), body As Action(Of TSource, ParallelLoopState, Long)) As ParallelLoopResult
Tür Parametreleri
- TSource
içindeki sourceöğelerin türü.
Parametreler
Özgün veri kaynağını içeren sıralanabilir bölümleyici.
- body
- Action<TSource,ParallelLoopState,Int64>
Yineleme başına bir kez çağrılan temsilci.
Döndürülenler
Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.
Özel durumlar
SupportsDynamicPartitions Sıralanabilir bölümleyicideki source özelliği döndürürfalse.
-veya-
KeysNormalized Kaynak sıralanabilir bölümleyicideki özelliği döndürürfalse.
-veya-
Kaynak sıralanabilir bölümleyicideki tüm yöntemler döndürür null.
Belirtilen temsilcilerden birinden oluşan özel durum.
Açıklamalar
Bu aşırı yükleme, varsayılan bölümleme düzenini geçersiz kılmak istediğiniz senaryolar için sağlanır. Örneğin, küçük döngü gövdeleri aralığın bölümlenmesinden yararlanabilir. yöntemi, Parallel.ForEach özel bölümleyicilerin dinamik bölümlemeyi desteklemesini bekler. Daha fazla bilgi için bkz. PLINQ ve TPL için Özel Bölümleyiciler ve Nasıl yapılır: Dinamik Bölümleri Uygulama.
Şunlara uygulanır
ForEach<TSource>(IEnumerable<TSource>, Action<TSource>)
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
Yinelemelerin paralel olarak çalışabileceği bir IEnumerable üzerinde bir foreach (For Each Visual Basic) işlemi yürütür.
public:
generic <typename TSource>
static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, Action<TSource> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource>(System.Collections.Generic.IEnumerable<TSource> source, Action<TSource> body);
static member ForEach : seq<'Source> * Action<'Source> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As IEnumerable(Of TSource), body As Action(Of TSource)) As ParallelLoopResult
Tür Parametreleri
- TSource
Kaynaktaki verilerin türü.
Parametreler
- source
- IEnumerable<TSource>
Numaralandırılabilir bir veri kaynağı.
- body
- Action<TSource>
Yineleme başına bir kez çağrılan temsilci.
Döndürülenler
Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.
Özel durumlar
Tüm iş parçacıklarında oluşan tek tek özel durumları içeren özel durum.
Örnekler
Aşağıdaki örnek, bir metin dosyasındaki ForEach<TSource>(IEnumerable<TSource>, Action<TSource>) ünlü ve boşluk olmayan karakterleri saymak için yöntemini kullanır. Bu durumda, ParallelLoopResult yöntemi tarafından döndürülen değer yoksayılır. İşlemler paralel olarak çalışabildiğinden, sayaç değişkenlerini artırmanın atomik bir işlem olduğundan ve birden çok iş parçacığının sayaç değişkenlerine aynı anda erişmeye çalışmadığından emin olmanız gerektiğini unutmayın. Bu amaçla, örnek lock deyimini (C#'da) ve SyncLock deyimini (Visual Basic içinde) kullanır.
using System;
using System.IO;
using System.Threading.Tasks;
public class Example
{
public static void Main()
{
Task<String> task = ReadCharacters(@".\CallOfTheWild.txt");
String text = task.Result;
int nVowels = 0;
int nNonWhiteSpace = 0;
Object obj = new Object();
ParallelLoopResult result = Parallel.ForEach(text,
(ch) => {
Char uCh = Char.ToUpper(ch);
if ("AEIOUY".IndexOf(uCh) >= 0) {
lock (obj) {
nVowels++;
}
}
if (!Char.IsWhiteSpace(uCh)) {
lock (obj) {
nNonWhiteSpace++;
}
}
} );
Console.WriteLine("Total characters: {0,10:N0}", text.Length);
Console.WriteLine("Total vowels: {0,10:N0}", nVowels);
Console.WriteLine("Total non-white-space: {0,10:N0}", nNonWhiteSpace);
}
private static async Task<String> ReadCharacters(String fn)
{
String text;
using (StreamReader sr = new StreamReader(fn)) {
text = await sr.ReadToEndAsync();
}
return text;
}
}
// The example displays output like the following:
// Total characters: 198,548
// Total vowels: 58,421
// Total non-white-space: 159,461
Imports System.IO
Imports System.Threading.Tasks
Module Example
Public Sub Main()
Dim task As Task(Of String) = ReadCharacters(".\CallOfTheWild.txt")
Dim text As String = task.Result
Dim nVowels As Integer = 0
Dim nNonWhiteSpace As Integer = 0
Dim obj As New Object()
Dim result As ParallelLoopResult = Parallel.ForEach(text,
Sub(ch)
Dim uCh As Char = Char.ToUpper(ch)
If "AEIOUY".IndexOf(uCh) >= 0 Then
SyncLock obj
nVowels += 1
End SyncLock
End If
If Not Char.IsWhiteSpace(uCh) Then
SyncLock obj
nNonWhiteSpace += 1
End SyncLock
End If
End Sub)
Console.WriteLine("Total characters: {0,10:N0}", text.Length)
Console.WriteLine("Total vowels: {0,10:N0}", nVowels)
Console.WriteLine("Total non-white space: {0,10:N0}", nNonWhiteSpace)
End Sub
Private Async Function ReadCharacters(fn As String) As Task(Of String)
Dim text As String
Using sr As New StreamReader(fn)
text = Await sr.ReadToEndAsync()
End Using
Return text
End Function
End Module
' The output from the example resembles the following:
' Total characters: 198,548
' Total vowels: 58,421
' Total non-white space: 159,461
Açıklamalar
Temsilci body , numaralandırılabilir içindeki source her öğe için bir kez çağrılır. Geçerli öğe parametre olarak sağlanır.
Şunlara uygulanır
ForEach<TSource>(Partitioner<TSource>, ParallelOptions, Action<TSource,ParallelLoopState>)
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
foreach (For Each Visual Basic) işlemini, yinelemelerin paralel olarak çalışabileceği, döngü seçeneklerinin yapılandırılabildiği ve döngünün durumunun izlenip değiştirilebildiği bir Partitioner yürütür.
public:
generic <typename TSource>
static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::Partitioner<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Action<TSource, System::Threading::Tasks::ParallelLoopState ^> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource>(System.Collections.Concurrent.Partitioner<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Action<TSource,System.Threading.Tasks.ParallelLoopState> body);
static member ForEach : System.Collections.Concurrent.Partitioner<'Source> * System.Threading.Tasks.ParallelOptions * Action<'Source, System.Threading.Tasks.ParallelLoopState> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As Partitioner(Of TSource), parallelOptions As ParallelOptions, body As Action(Of TSource, ParallelLoopState)) As ParallelLoopResult
Tür Parametreleri
- TSource
içindeki sourceöğelerin türü.
Parametreler
- source
- Partitioner<TSource>
Özgün veri kaynağını içeren bölümleyici.
- parallelOptions
- ParallelOptions
Bu işlemin davranışını yapılandıran bir nesne.
- body
- Action<TSource,ParallelLoopState>
Yineleme başına bir kez çağrılan temsilci.
Döndürülenler
Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.
Özel durumlar
CancellationToken bağımsız değişkenindeki parallelOptions iptal edilir.
CancellationTokenSource içindeki CancellationToken ile parallelOptions ilişkilendirilmiş olan atılmıştır.
source bağımsız değişkenidirnull.
-veya-
parallelOptions bağımsız değişkenidirnull.
-veya-
body bağımsız değişkenidirnull.
SupportsDynamicPartitions Bölümleyicideki source özelliği döndürürfalse.
-veya-
Bölümleyicideki herhangi bir yöntem döndürdüğünüzde sourcenulloluşan özel durum.
Belirtilen temsilcilerden birinden oluşan bir özel durum içermesi için atılan özel durum.
Açıklamalar
Bu aşırı yükleme, varsayılan bölümleme düzenini geçersiz kılmak istediğiniz senaryolar için sağlanır. Örneğin, küçük döngü gövdeleri aralığın bölümlenmesinden yararlanabilir. yöntemi, Parallel.ForEach özel bölümleyicilerin dinamik bölümlemeyi desteklemesini bekler. Daha fazla bilgi için bkz. PLINQ ve TPL için Özel Bölümleyiciler ve Nasıl yapılır: Dinamik Bölümleri Uygulama.
Şunlara uygulanır
ForEach<TSource>(IEnumerable<TSource>, Action<TSource,ParallelLoopState>)
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
Yinelemelerin paralel olarak çalıştırılabildiği ve döngünün durumunun izlenip işlenebildiği bir IEnumerable üzerinde bir foreach (Visual Basic'de For Each) işlemi yürütür.
public:
generic <typename TSource>
static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, Action<TSource, System::Threading::Tasks::ParallelLoopState ^> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource>(System.Collections.Generic.IEnumerable<TSource> source, Action<TSource,System.Threading.Tasks.ParallelLoopState> body);
static member ForEach : seq<'Source> * Action<'Source, System.Threading.Tasks.ParallelLoopState> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As IEnumerable(Of TSource), body As Action(Of TSource, ParallelLoopState)) As ParallelLoopResult
Tür Parametreleri
- TSource
Kaynaktaki verilerin türü.
Parametreler
- source
- IEnumerable<TSource>
Numaralandırılabilir bir veri kaynağı.
- body
- Action<TSource,ParallelLoopState>
Yineleme başına bir kez çağrılan temsilci.
Döndürülenler
Döngünün hangi bölümünün tamamlandığı hakkında bilgi içeren bir yapı.
Özel durumlar
Tüm iş parçacıklarında oluşan tek tek özel durumları içeren özel durum.
Açıklamalar
Temsilci body , numaralandırılabilir içindeki source her öğe için bir kez çağrılır. Aşağıdaki parametrelerle sağlanır: geçerli öğe ve döngüden erken çıkmak için kullanılabilecek bir ParallelLoopState örnek.