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'te) işlemi yürütür.
Aşırı Yüklemeler
ForEach<TSource,TLocal>(IEnumerable<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>) |
Yinelemelerin |
ForEach<TSource,TLocal>(IEnumerable<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>) |
Yinelemelerin |
ForEach<TSource,TLocal>(Partitioner<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>) |
Yinelemelerin |
ForEach<TSource,TLocal>(OrderablePartitioner<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>) |
64 bit dizinlerle ve yinelemelerin paralel olarak çalışabileceği bir iş parçacığı yerel verileriyle ( Visual Basic'te) bir |
ForEach<TSource,TLocal>(IEnumerable<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>) |
Yinelemelerin |
ForEach<TSource,TLocal>(IEnumerable<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>) |
Yinelemelerin |
ForEach<TSource,TLocal>(Partitioner<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>) |
Yinelemelerin |
ForEach<TSource,TLocal>(OrderablePartitioner<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>) |
Yinelemelerin |
ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource>) |
Yinelemelerin |
ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource,ParallelLoopState>) |
Yinelemelerin |
ForEach<TSource>(OrderablePartitioner<TSource>, ParallelOptions, Action<TSource,ParallelLoopState,Int64>) |
Yinelemelerin |
ForEach<TSource>(Partitioner<TSource>, ParallelOptions, Action<TSource>) |
Yinelemelerin |
ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource,ParallelLoopState,Int64>) |
Yinelemelerin |
ForEach<TSource>(Partitioner<TSource>, Action<TSource,ParallelLoopState>) |
Yinelemelerin |
ForEach<TSource>(Partitioner<TSource>, Action<TSource>) |
Yinelemelerin |
ForEach<TSource>(IEnumerable<TSource>, Action<TSource,ParallelLoopState,Int64>) |
Yinelemelerin |
ForEach<TSource>(OrderablePartitioner<TSource>, Action<TSource,ParallelLoopState,Int64>) |
Yinelemelerin |
ForEach<TSource>(IEnumerable<TSource>, Action<TSource>) |
Yinelemelerin |
ForEach<TSource>(Partitioner<TSource>, ParallelOptions, Action<TSource,ParallelLoopState>) |
Yinelemelerin |
ForEach<TSource>(IEnumerable<TSource>, Action<TSource,ParallelLoopState>) |
Yinelemelerin |
ForEach<TSource,TLocal>(IEnumerable<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>)
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
Yinelemelerin foreach
paralel olarak çalışabileceği, döngü seçeneklerinin yapılandırılabildiği ve döngünün durumunun izlenip işlenebildiği bir IEnumerable iş parçacığı yerel verileriyle bir (For Each
Visual Basic'te) 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
bağımsız source
değişkenidir null
.
-veya-
bağımsız parallelOptions
değişkenidir null
.
-veya-
bağımsız body
değişkenidir null
.
-veya-
bağımsız localInit
değişkenidir null
.
-veya-
bağımsız localFinally
değişkenidir null
.
CancellationToken bağımsız değişkenindeki parallelOptions
iptal edilir.
CancellationTokenSource içindeki parallelOptions
ile CancellationToken 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 öğedeki source
her öğe için bir kez çağrılır. Şu 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şılabilecek bazı yerel durum.
Döngünün localInit
yürütülmesine katılan her görev için temsilci 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. Ardından, izleyen her gövde çağrısı, bir sonraki gövde çağırmasına geçirilen 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 süresi 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.
Ayrıca bkz.
Ş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
Yinelemelerin foreach
paralel olarak çalışabileceği, döngü seçeneklerinin yapılandırıldığı ve döngünün durumunun izlenip işlenebildiği bir işlem üzerinde iş parçacığı yerel verileri ve 64 bit dizinlerle bir IEnumerable (For Each
Visual Basic'te) 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
bağımsız source
değişkenidir null
.
-veya-
bağımsız parallelOptions
değişkenidir null
.
-veya-
bağımsız body
değişkenidir null
.
-veya-
bağımsız localInit
değişkenidir null
.
-veya-
bağımsız localFinally
değişkenidir null
.
CancellationToken bağımsız değişkenindeki parallelOptions
iptal edilir.
CancellationTokenSource içindeki parallelOptions
ile CancellationToken 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 öğedeki source
her öğe için bir kez çağrılır. Şu 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şılabilecek bazı yerel durum.
Döngünün localInit
yürütülmesine katılan her görev için temsilci 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. Ardından, izleyen her gövde çağrısı, bir sonraki gövde çağırmasına geçirilen 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 süresi 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.
Ayrıca bkz.
Ş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
Yinelemelerin foreach
paralel olarak çalışabileceği, döngü seçeneklerinin yapılandırıldığı ve döngünün durumunun izlenip işlenebildiği bir Partitioner üzerinde iş parçacığı yerel verileriyle bir (For Each
Visual Basic'te) işlemi 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 içindeki source
Partitioner özelliği veya false
bölümleyici 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 parallelOptions
ile CancellationToken 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.
Döngünün localInit
yürütülmesine katılan her görev için temsilci 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. Ardından, sonraki her gövde çağrısı, bir sonraki gövde çağrısına geçirilen muhtemelen 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 bir eylem 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 süresi 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.
Ayrıca bkz.
Ş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
64 bit dizinler ve yinelemelerin foreach
paralel olarak çalışabileceği bir üzerinde iş parçacığı yerel verileriyle bir OrderablePartitioner<TSource> (For Each
Visual Basic'te) 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 içindeki source
Partitioner özelliği veya false
bölümleyici 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 parallelOptions
ile CancellationToken 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.
Döngünün localInit
yürütülmesine katılan her görev için temsilci 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. Ardından, sonraki her gövde çağrısı, bir sonraki gövde çağrısına geçirilen muhtemelen 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 bir eylem 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 süresi 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.
Ayrıca bkz.
Ş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
Yinelemelerin foreach
paralel olarak çalışabileceği ve döngünün durumunun izlenip işlenebildiği bir üzerinde iş parçacığı yerel verileriyle bir IEnumerable (For Each
Visual Basic'te) işlemi 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 öğedeki 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şılabilecek bazı yerel durum.
Döngünün localInit
yürütülmesine katılan her görev için temsilci 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. Ardından, sonraki her gövde çağrısı, bir sonraki gövde çağrısına geçirilen muhtemelen 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 süresi 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.
Ayrıca bkz.
Ş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
Yinelemelerin foreach
paralel olarak çalıştırılabildiği ve döngünün durumunun izlenip işlenebildiği bir üzerinde iş parçacığı yerel verileriyle bir IEnumerable (For Each
Visual Basic'te) işlemi 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 öğedeki 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, geçerli öğenin dizini ()Int64 ve aynı iş parçacığında yürütülen yinelemeler arasında paylaşılabilecek bazı yerel durum.
Döngünün localInit
yürütülmesine katılan her görev için temsilci 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. Ardından, sonraki her gövde çağrısı, bir sonraki gövde çağrısına geçirilen muhtemelen 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 bir eylem 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 süresi 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.
Ayrıca bkz.
Ş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
Yinelemelerin foreach
paralel olarak çalışabileceği ve döngünün durumunun izlenip işlenebildiği bir üzerinde iş parçacığı yerel verileriyle bir Partitioner (For Each
Visual Basic'te) işlemi 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 içindeki source
Partitioner özelliği veya false
bölümleyici 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. Ardından, sonraki her gövde çağrısı, bir sonraki gövde çağrısına geçirilen muhtemelen 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 bir eylem 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 süresi 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.
Ayrıca bkz.
Ş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
Yinelemelerin foreach
paralel olarak çalışabileceği, döngü seçeneklerinin yapılandırıldığı ve döngünün durumunun izlenip işlenebildiği bir OrderablePartitioner<TSource> üzerinde iş parçacığı yerel verileriyle bir (For Each
Visual Basic'te) işlemi 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 içindeki source
Partitioner özelliği veya false
bölümleyici 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.
Döngünün localInit
yürütülmesine katılan her görev için temsilci 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. Ardından, sonraki her gövde çağrısı, bir sonraki gövde çağrısına geçirilen muhtemelen 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 bir eylem 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 süresi 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.
Ayrıca bkz.
Şunlara uygulanır
ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource>)
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
Yinelemelerin foreach
paralel olarak çalışabileceği ve döngü seçeneklerinin yapılandırılabildiği bir IEnumerable (For Each
Visual Basic'te) 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 parallelOptions
ile CancellationToken ilişkilendirilmiş olan atılmıştır.
Açıklamalar
Temsilci body
, numaralandırılabilir öğedeki source
her öğe için bir kez çağrılır. Geçerli öğeyle parametre olarak sağlanır.
Ayrıca bkz.
Şunlara uygulanır
ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource,ParallelLoopState>)
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
Yinelemelerin foreach
paralel olarak çalışabileceği, döngü seçeneklerinin yapılandırılabildiği ve döngünün durumunun izlenip işlenebildiği bir IEnumerable (For Each
Visual Basic'te) 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
bağımsız source
değişkenidir null
.
-veya-
bağımsız parallelOptions
değişkenidir null
.
-veya-
bağımsız body
değişkenidir null
.
Tüm iş parçacıklarında oluşan tek tek özel durumları içeren özel durum.
CancellationTokenSource içindeki parallelOptions
ile CancellationToken ilişkilendirilmiş olan atılmıştır.
Açıklamalar
Temsilci body
, numaralandırılabilir öğedeki source
her öğe için bir kez çağrılır. Şu parametrelerle sağlanır: geçerli öğe ve döngüden erken çıkmak için kullanılabilecek bir ParallelLoopState örnek.
Ayrıca bkz.
Şunlara uygulanır
ForEach<TSource>(OrderablePartitioner<TSource>, ParallelOptions, Action<TSource,ParallelLoopState,Int64>)
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
Yinelemelerin foreach
paralel olarak çalışabileceği, döngü seçeneklerinin yapılandırılabildiği ve döngünün durumunun izlenip işlenebildiği bir OrderablePartitioner<TSource> (For Each
Visual Basic'te) işlemi 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
bağımsız source
değişkenidir null
.
-veya-
bağımsız parallelOptions
değişkenidir null
.
-veya-
bağımsız body
değişkenidir null
.
CancellationTokenSource içindeki parallelOptions
ile CancellationToken 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 source
null
oluş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.
Ayrıca bkz.
Şunlara uygulanır
ForEach<TSource>(Partitioner<TSource>, ParallelOptions, Action<TSource>)
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
Yinelemelerin foreach
paralel olarak çalışabileceği ve döngü seçeneklerinin yapılandırılabildiği bir Partitioner (For Each
Visual Basic'te) 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 parallelOptions
ile CancellationToken ilişkilendirilmiş olan atılmıştır.
bağımsız source
değişkenidir null
.
-veya-
bağımsız parallelOptions
değişkenidir null
.
-veya-
bağımsız body
değişkenidir null
.
SupportsDynamicPartitions Bölümleyicideki source
özelliği döndürürfalse
.
-veya-
Bölümleyicideki herhangi bir yöntem döndürdüğünüzde source
null
oluş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.
Ayrıca bkz.
Şunlara uygulanır
ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource,ParallelLoopState,Int64>)
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
Yinelemelerin foreach
For Each
paralel olarak çalışabileceği, döngü seçeneklerinin yapılandırılabildiği ve döngünün durumunun izlenip işlenebildiği bir 64 bit dizinlerle ( Visual Basic'te) bir IEnumerable 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 ^, 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
bağımsız source
değişkenidir null
.
-veya-
bağımsız parallelOptions
değişkenidir null
.
-veya-
bağımsız body
değişkenidir null
.
Tüm iş parçacıklarında oluşan tek tek özel durumları içeren özel durum.
CancellationTokenSource içindeki parallelOptions
ile CancellationToken ilişkilendirilmiş olan atılmıştır.
Açıklamalar
Temsilci body
, numaralandırılabilir öğedeki source
her öğe için bir kez çağrılır. Şu 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).
Ayrıca bkz.
Şunlara uygulanır
ForEach<TSource>(Partitioner<TSource>, Action<TSource,ParallelLoopState>)
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
Yinelemelerin foreach
paralel olarak çalışabileceği ve döngünün durumunun izlenip işlenebildiği bir Partitioner (For Each
Visual Basic'te) işlemi 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.
Ayrıca bkz.
Şunlara uygulanır
ForEach<TSource>(Partitioner<TSource>, Action<TSource>)
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
Yinelemelerin foreach
paralel olarak çalışabileceği bir Partitioner (For Each
Visual Basic'te) 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 source
null
oluş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.
Ayrıca bkz.
Şunlara uygulanır
ForEach<TSource>(IEnumerable<TSource>, Action<TSource,ParallelLoopState,Int64>)
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
Yinelemelerin foreach
paralel olarak çalışabileceği ve döngünün durumunun izlenip işlenebildiği bir 64 bit dizinler içeren bir IEnumerable (For Each
Visual Basic'te) 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 öğedeki source
her öğe için bir kez çağrılır. Şu 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).
Ayrıca bkz.
Şunlara uygulanır
ForEach<TSource>(OrderablePartitioner<TSource>, Action<TSource,ParallelLoopState,Int64>)
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
Yinelemelerin foreach
paralel olarak çalışabileceği ve döngünün durumunun izlenip işlenebildiği bir OrderablePartitioner<TSource> (For Each
Visual Basic'te) işlemi 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.
Ayrıca bkz.
Şunlara uygulanır
ForEach<TSource>(IEnumerable<TSource>, Action<TSource>)
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
Yinelemelerin foreach
paralel olarak çalışabileceği bir IEnumerable (For Each
Visual Basic'te) 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ülerin ve boşluk olmayan karakterlerin sayısını 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ışabileceğ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 örnekte deyimi (C#'ta) ve SyncLock
deyimi (Visual Basic'te) kullanılırlock
.
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 öğedeki source
her öğe için bir kez çağrılır. Geçerli öğeyle parametre olarak sağlanır.
Ayrıca bkz.
Şunlara uygulanır
ForEach<TSource>(Partitioner<TSource>, ParallelOptions, Action<TSource,ParallelLoopState>)
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
Yinelemelerin foreach
paralel olarak çalışabileceği, döngü seçeneklerinin yapılandırılabildiği ve döngünün durumunun izlenip işlenebildiği bir Partitioner (For Each
Visual Basic'te) 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, 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 parallelOptions
ile CancellationToken ilişkilendirilmiş olan atılmıştır.
bağımsız source
değişkenidir null
.
-veya-
bağımsız parallelOptions
değişkenidir null
.
-veya-
bağımsız body
değişkenidir null
.
SupportsDynamicPartitions Bölümleyicideki source
özelliği döndürürfalse
.
-veya-
Bölümleyicideki herhangi bir yöntem döndürdüğünüzde source
null
oluş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.
Ayrıca bkz.
Şunlara uygulanır
ForEach<TSource>(IEnumerable<TSource>, Action<TSource,ParallelLoopState>)
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
- Kaynak:
- Parallel.cs
Yinelemelerin foreach
paralel olarak çalışabileceği ve döngünün durumunun izlenip işlenebildiği bir üzerinde (For Each
Visual Basic'te) bir IEnumerable işlem 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 öğedeki source
her öğe için bir kez çağrılır. Şu parametrelerle sağlanır: geçerli öğe ve döngüden erken çıkmak için kullanılabilecek bir ParallelLoopState örnek.