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 sourcePartitioner ö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 sourcePartitioner ö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 sourcePartitioner ö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 sourcePartitioner ö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 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.
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 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.
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 foreachFor 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 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.
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 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.
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.