Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Paralel Desenler Kitaplığı (PPL), öğelerine iş parçacığı güvenli erişim sağlayan çeşitli kapsayıcılar ve nesneler içerir.
Eşzamanlı kapsayıcı , en önemli işlemlere eşzamanlılık açısından güvenli erişim sağlar. Burada eşzamanlılık açısından güvenli, işaretçilerin veya yineleyicilerin her zaman geçerli olduğu anlamına gelir. Bu, öğe başlatmanın veya belirli bir dolaşma sırasının garantisi değildir. Bu kapsayıcıların işlevselliği, C++ Standart Kitaplığı tarafından sağlananlara benzer. Örneğin, eşzamanlılık::concurrent_vector sınıfı, std::vector sınıfına benzer, ancak concurrent_vector sınıfı, öğeleri paralel olarak eklemenize olanak tanır. Aynı kapsayıcıya hem okuma hem de yazma erişimi gerektiren paralel kodunuz olduğunda eşzamanlı kapsayıcıları kullanın.
Eşzamanlı bir nesne bileşenler arasında eşzamanlı olarak paylaşılır. Eşzamanlı bir nesnenin durumunu paralel olarak hesaplayan bir işlem, aynı durumu seri olarak hesaplayan başka bir işlemle aynı sonucu verir.
concurrency::combinable sınıfı, eş zamanlı nesne türünün bir örneğidir. sınıfı, combinable hesaplamaları paralel olarak gerçekleştirmenize ve ardından bu hesaplamaları nihai bir sonuç olarak birleştirmenize olanak tanır. Aksi takdirde, paylaşılan bir değişkene veya kaynağa erişimi eşzamanlı hale getirmek için bir eşitleme mekanizması (örneğin, bir mutex) kullanacağınız durumlarda eşzamanlı nesneler kullanın.
Bölümler
Bu konu başlığında aşağıdaki paralel kapsayıcılar ve nesneler ayrıntılı olarak açıklanmaktadır.
Eşzamanlı kapsayıcılar:
Eşzamanlı nesneler:
concurrent_vector Sınıfı
concurrency::concurrent_vector sınıfı, std::vector sınıfı gibi öğelerine rastgele erişmenizi sağlayan bir dizi kapsayıcı sınıfıdır.
concurrent_vector sınıfı, eşzamanlı güvenli ekleme ve eleman erişim işlemlerini etkinleştirir. Ekleme işlemleri mevcut işaretçileri veya yineleyicileri geçersiz kılmaz. Yineleyici erişimi ve dolaşma işlemleri de eşzamanlılık açısından güvenlidir. Burada eşzamanlılık açısından güvenli, işaretçilerin veya yineleyicilerin her zaman geçerli olduğu anlamına gelir. Bu, öğe başlatmanın veya belirli bir dolaşma sırasının garantisi değildir.
concurrent_vector ve vector arasındaki farklar
concurrent_vector sınıfı, vector sınıfına çok benzer. Bir nesnedeki concurrent_vector ekleme, öğe erişimi ve yineleyici erişim işlemlerinin karmaşıklığı nesneyle vector aynıdır. Aşağıdaki noktalar concurrent_vector ile vector arasındaki farkları gösterir:
Bir
concurrent_vectornesnedeki ekleme, öğe erişimi, yineleyici erişimi ve yineleyici geçiş işlemleri eşzamanlılık açısından güvenlidir.Yalnızca nesnenin
concurrent_vectorsonuna öğe ekleyebilirsiniz.concurrent_vectorsınıfıinsertyöntemini sağlamaz.Nesneye
concurrent_vectoreklerken taşıma semantiği kullanmaz.The correct translation should read:
concurrent_vectorsınıfıeraseveyapop_backyöntemini sağlamaz.vectorile olduğu gibi, birconcurrent_vectornesnesinden tüm öğeleri kaldırmak için clear yöntemini kullanın.concurrent_vectorsınıfı, öğelerini bitişik olarak bellekte depolamaz. Bu nedenle, sınıfınıconcurrent_vectorbir diziyi kullanabileceğiniz tüm yollarla kullanamazsınız. Örneğin, türündevadlıconcurrent_vectorbir değişken için ifade&v[0]+2tanımsız davranış üretir.sınıf,
concurrent_vectorgrow_by ve grow_to_at_least yöntemlerini tanımlar. Bu yöntemler, eşzamanlılık açısından güvenli olmaları dışında yeniden boyutlandırma yöntemine benzer.Bir
concurrent_vectornesne, öğelerine eklediğinizde veya yeniden boyutlandırdığınızda öğelerini yeniden taşımaz. Bu, mevcut işaretçilerin ve yineleyicilerin eşzamanlı işlemler sırasında geçerli kalmasını sağlar.Çalışma zamanı
concurrent_vectortürü içinboolözel bir sürümünü tanımlamaz.
Eşzamanlılık-Güvenli İşlemler
Bir nesnenin sonuna eklenen veya nesnenin boyutunu artıran ya da nesnedeki concurrent_vectorconcurrent_vector bir öğeye erişen tüm yöntemler eşzamanlılık açısından güvenlidir. Burada eşzamanlılık açısından güvenli, işaretçilerin veya yineleyicilerin her zaman geçerli olduğu anlamına gelir. Bu, öğe başlatmanın veya belirli bir dolaşma sırasının garantisi değildir. Bu kuralın özel durumu yöntemidir resize .
Aşağıdaki tabloda eşzamanlılık açısından güvenli olan yaygın concurrent_vector yöntemler ve işleçler gösterilmektedir.
Çalışma zamanının C++ Standart Kitaplığı ile uyumluluk için sağladığı işlemler (örneğin, reserve) eşzamanlılık açısından güvenli değildir. Aşağıdaki tabloda eşzamanlılık açısından güvenli olmayan yaygın yöntemler ve işleçler gösterilmektedir.
Mevcut öğelerin değerini değiştiren işlemler eşzamanlılık açısından güvenli değildir. Eşzamanlı okuma ve yazma işlemlerini aynı veri öğesiyle eşitlemek için reader_writer_lock nesnesi gibi bir eşitleme nesnesi kullanın. Eşitleme nesneleri hakkında daha fazla bilgi için bkz . Eşitleme Veri Yapıları.
Mevcut vector kodunu concurrent_vector kullanarak dönüştürdüğünüzde, eşzamanlı işlemler uygulamanızın davranışının değişmesine neden olabilir. Örneğin, bir concurrent_vector nesne üzerinde iki görevi eşzamanlı olarak gerçekleştiren aşağıdaki programı göz önünde bulundurun. İlk görev bir concurrent_vector nesneye ek öğeler ekler. İkinci görev, aynı nesnedeki tüm öğelerin toplamını hesaplar.
// parallel-vector-sum.cpp
// compile with: /EHsc
#include <ppl.h>
#include <concurrent_vector.h>
#include <iostream>
using namespace concurrency;
using namespace std;
int wmain()
{
// Create a concurrent_vector object that contains a few
// initial elements.
concurrent_vector<int> v;
v.push_back(2);
v.push_back(3);
v.push_back(4);
// Perform two tasks in parallel.
// The first task appends additional elements to the concurrent_vector object.
// The second task computes the sum of all elements in the same object.
parallel_invoke(
[&v] {
for(int i = 0; i < 10000; ++i)
{
v.push_back(i);
}
},
[&v] {
combinable<int> sums;
for(auto i = begin(v); i != end(v); ++i)
{
sums.local() += *i;
}
wcout << L"sum = " << sums.combine(plus<int>()) << endl;
}
);
}
Yöntem eşzamanlılık açısından güvenli olsa daend, push_back yöntemine yapılan eşzamanlı bir çağrı tarafından end döndürülen değerin değişmesine neden olur. Yineleyicinin geçiş yaptığı öğe sayısı belirsizdir. Bu nedenle, bu program her çalıştırdığınızda farklı bir sonuç üretebilir. Öğe türü karmaşık olduğunda, push_back ve end çağrıları arasında bir yarış durumu oluşabilir.
end yöntemi ayrılmış bir öğe döndürebilir, ancak tam olarak başlatılmamış olabilir.
Özel Durum Güvenliği
Bir büyüme veya atama işlemi özel durum oluşturursa, nesnenin concurrent_vector durumu geçersiz hale gelir. Geçersiz durumdaki bir concurrent_vector nesnenin davranışı, aksi belirtilmedikçe tanımlanmamıştır. Ancak yıkıcı, nesne geçersiz durumda olsa bile nesnenin ayırmış olduğu belleği her zaman serbest bırakır.
vektör öğelerinin Tveri türü aşağıdaki gereksinimleri karşılamalıdır. Aksi takdirde, sınıfın concurrent_vector davranışı tanımlanmamıştır.
Yok edici atmamalıdır.
Varsayılan veya kopya oluşturucu hata atarsa, yok edici anahtar sözcüğü
virtualile bildirilmemelidir ve sıfırdan başlatılan bellekle doğru şekilde çalışmalıdır.
[Üst]
concurrent_queue Sınıfı
aynı std::queue sınıfı gibi eşzamanlılık::concurrent_queue sınıfı da ön ve arka öğelerine erişmenizi sağlar.
concurrent_queue sınıfı, eşzamanlı güvenli ekleme ve çıkarma işlemlerini etkinleştirir. Burada eşzamanlılık açısından güvenli, işaretçilerin veya yineleyicilerin her zaman geçerli olduğu anlamına gelir. Bu, öğe başlatmanın veya belirli bir dolaşma sırasının garantisi değildir. sınıfı concurrent_queue , eşzamanlılık açısından güvenli olmayan yineleyici desteği de sağlar.
concurrent_queue ile kuyruk arasındaki farklar
concurrent_queue sınıfı, queue sınıfına çok benzer. Aşağıdaki noktalar concurrent_queue ile queue arasındaki farkları gösterir:
concurrent_queuenesnesi üzerinde yapılan kuyruklama ve kuyruktan çıkarma işlemleri eşzamanlı kullanım açısından güvenlidir.sınıfı eşzamanlılık
concurrent_queueaçısından güvenli olmayan yineleyici destek sağlar.The correct translation should read:
concurrent_queuesınıfıfrontveyapopyöntemini sağlamaz. sınıfı,concurrent_queuetry_pop yöntemini tanımlayarak bu yöntemlerin yerini alır.concurrent_queuesınıfıbackyöntemini sağlamaz. Bu nedenle, kuyruğun sonuna erişemezsiniz.concurrent_queuesınıfı,sizeyöntemi yerine unsafe_size yöntemini sağlar.unsafe_sizeyöntemi eşzamanlılık açısından güvenli değildir.
Eşzamanlılık-Güvenli İşlemler
Bir concurrent_queue nesnesine eklenme veya bu nesneden çıkarılma işlemi yapan tüm yöntemler eşzamanlı güvenliğindedir. Burada eşzamanlılık açısından güvenli, işaretçilerin veya yineleyicilerin her zaman geçerli olduğu anlamına gelir. Bu, öğe başlatmanın veya belirli bir dolaşma sırasının garantisi değildir.
Aşağıdaki tabloda eşzamanlılık açısından güvenli olan yaygın concurrent_queue yöntemler ve işleçler gösterilmektedir.
empty yöntemi eşzamanlılık açısından güvenli olmasına rağmen, eşzamanlı bir işlem kuyruğun büyümesine veya küçülmesine neden olabilir ve bu, empty yöntemi döndürmeden önce gerçekleşebilir.
Aşağıdaki tabloda eşzamanlılık açısından güvenli olmayan yaygın yöntemler ve işleçler gösterilmektedir.
Yineleyici Desteği
concurrent_queue eşzamanlılık açısından güvenli olmayan yineleyiciler sağlar. Bu yineleyicileri yalnızca hata ayıklama için kullanmanızı öneririz.
Yineleyici concurrent_queue öğeleri yalnızca ileri yönde tarar. Aşağıdaki tabloda, her yineleyicinin desteklediği işleçler gösterilmektedir.
| Operatör | Açıklama |
|---|---|
operator++ |
Kuyruktaki sonraki öğeye ilerler. Bu işleç hem ön artış hem de artım sonrası semantiği sağlamak için aşırı yüklenmiştir. |
operator* |
Geçerli öğeye bir referans alır. |
operator-> |
Geçerli öğeye yönelik bir işaretçi alır. |
[Üst]
concurrent_unordered_map Sınıfı
concurrency::concurrent_unordered_map sınıfı, std::unordered_map sınıfı gibi std::pair<const Key, Ty> türündeki öğelerin değişen uzunluklu dizisini denetleyen ilişkilendirici bir kapsayıcı sınıftır. Sırasız bir haritayı, anahtar ve değer çifti ekleyebileceğiniz veya anahtara göre bir değeri arayabileceğiniz bir sözlük olarak düşünün. Bu sınıf, paylaşılan bir kapsayıcıya eşzamanlı olarak erişmesi, kapsayıcıya eklenmesi veya güncelleştirilmesi gereken birden çok iş parçacığınız veya göreviniz olduğunda kullanışlıdır.
Aşağıdaki örnekte kullanmak concurrent_unordered_mapiçin temel yapı gösterilmektedir. Bu örnek ['a', 'i'] aralığına karakter tuşları ekler. İşlemlerin sırası belirlenmediğinden, her anahtarın son değeri de belirlenemez. Ancak, eklemeleri paralel olarak gerçekleştirmek güvenlidir.
// unordered-map-structure.cpp
// compile with: /EHsc
#include <ppl.h>
#include <concurrent_unordered_map.h>
#include <iostream>
using namespace concurrency;
using namespace std;
int wmain()
{
//
// Insert a number of items into the map in parallel.
concurrent_unordered_map<char, int> map;
parallel_for(0, 1000, [&map](int i) {
char key = 'a' + (i%9); // Geneate a key in the range [a,i].
int value = i; // Set the value to i.
map.insert(make_pair(key, value));
});
// Print the elements in the map.
for_each(begin(map), end(map), [](const pair<char, int>& pr) {
wcout << L"[" << pr.first << L", " << pr.second << L"] ";
});
}
/* Sample output:
[e, 751] [i, 755] [a, 756] [c, 758] [g, 753] [f, 752] [b, 757] [d, 750] [h, 754]
*/
Paralel olarak eşleme ve azaltma işlemi gerçekleştirmek için concurrent_unordered_map kullanan bir örnek için bkz: Nasıl Yapılır: Paralel Eşleme ve Azaltma İşlemleri Gerçekleştirme.
concurrent_unordered_map ile unordered_map arasındaki farklar
concurrent_unordered_map sınıfı, unordered_map sınıfına çok benzer. Aşağıdaki noktalar concurrent_unordered_map ile unordered_map arasındaki farkları gösterir:
erase,bucket,bucket_countvebucket_sizeyöntemleri sırasıylaunsafe_erase,unsafe_bucket,unsafe_bucket_countveunsafe_bucket_sizeolarak adlandırılır. Adlandırmaunsafe_kuralı, bu yöntemlerin eşzamanlılık açısından güvenli olmadığını gösterir. Eşzamanlılık güvenliği hakkında daha fazla bilgi için bkz . Eşzamanlılık-Güvenli İşlemler.Ekleme işlemleri mevcut işaretçileri veya yineleyicileri geçersiz kılmaz veya haritada zaten var olan öğelerin sırasını değiştirmez. Ekleme ve dolaşma işlemleri eşzamanlı olarak gerçekleşebilir.
concurrent_unordered_mapyalnızca ileri yinelemeyi destekler.Ekleme,
equal_rangetarafından döndürülen yineleyicileri geçersiz kılmaz veya güncellemez. Ekleme, eşit olmayan öğeleri aralığın sonuna ekleyebilir. Başlangıç yineleyicisi eşit bir öğeye işaret eder.
Kilitlenmeyi önlemeye yardımcı olmak için hiçbir yöntem concurrent_unordered_map bellek ayırıcısını, karma işlevleri veya kullanıcı tanımlı diğer kodu çağırdığında kilit tutmaz. Ayrıca karma işlevinin her zaman eşit anahtarları aynı değere değerlendirdiğinden emin olmanız gerekir. En iyi karma işlevleri anahtarları karma kod alanı boyunca tekdüzen olarak dağıtır.
Eşzamanlılık-Güvenli İşlemler
sınıfı eşzamanlılık concurrent_unordered_map açısından güvenli ekleme ve öğe erişim işlemlerini etkinleştirir. Ekleme işlemleri mevcut işaretçileri veya yineleyicileri geçersiz kılmaz. Yineleyici erişimi ve dolaşma işlemleri de eşzamanlılık açısından güvenlidir. Burada eşzamanlılık açısından güvenli, işaretçilerin veya yineleyicilerin her zaman geçerli olduğu anlamına gelir. Bu, öğe başlatmanın veya belirli bir dolaşma sırasının garantisi değildir. Aşağıdaki tabloda eşzamanlılık açısından güvenli olan yaygın olarak kullanılan concurrent_unordered_map yöntemler ve işleçler gösterilmektedir.
Yöntemi eşzamanlı count çalışan iş parçacıklarından güvenli bir şekilde çağrılsa da, kapsayıcıya aynı anda yeni bir değer eklenirse farklı iş parçacıkları farklı sonuçlar alabilir.
Aşağıdaki tabloda eşzamanlılık açısından güvenli olmayan yaygın olarak kullanılan yöntemler ve işleçler gösterilmektedir.
Bu yöntemlere ek olarak, ile unsafe_ başlayan herhangi bir yöntem de eşzamanlılık açısından güvenli değildir.
[Üst]
concurrent_unordered_multimap Sınıfı
concurrency::concurrent_unordered_multimap sınıfı, birden fazla değerin aynı anahtarla eşlenmesine izin vermesi dışında, concurrent_unordered_map sınıfına oldukça benzemektedir. Ayrıca concurrent_unordered_map aşağıdaki şekillerde farklıdır:
concurrent_unordered_multimap::insert yöntemi yerine
std::pair<iterator, bool>bir yineleyici döndürür.concurrent_unordered_multimapsınıfı, neoperator[]ne deatyöntemini sağlar.
Aşağıdaki örnek, concurrent_unordered_multimap kullanımı için temel yapıyı göstermektedir. Bu örnek ['a', 'i'] aralığına karakter tuşları ekler.
concurrent_unordered_multimap bir anahtarın birden çok değere sahip olmasını sağlar.
// unordered-multimap-structure.cpp
// compile with: /EHsc
#include <ppl.h>
#include <concurrent_unordered_map.h>
#include <iostream>
using namespace concurrency;
using namespace std;
int wmain()
{
//
// Insert a number of items into the map in parallel.
concurrent_unordered_multimap<char, int> map;
parallel_for(0, 10, [&map](int i) {
char key = 'a' + (i%9); // Geneate a key in the range [a,i].
int value = i; // Set the value to i.
map.insert(make_pair(key, value));
});
// Print the elements in the map.
for_each(begin(map), end(map), [](const pair<char, int>& pr) {
wcout << L"[" << pr.first << L", " << pr.second << L"] ";
});
}
/* Sample output:
[e, 4] [i, 8] [a, 9] [a, 0] [c, 2] [g, 6] [f, 5] [b, 1] [d, 3] [h, 7]
*/
[Üst]
concurrent_unordered_set Sınıfı
concurrency::concurrent_unordered_set sınıfı, anahtar ve değer çiftleri yerine değerleri yönetmesi dışında sınıfa benzerconcurrent_unordered_map.
concurrent_unordered_set sınıfı ne operator[] ne de at yöntemini sağlar.
Aşağıdaki örnekte concurrent_unordered_set kullanmak için temel yapı gösterilmektedir. Bu örnek ['a', 'i'] aralığına karakter değerleri ekler. Eklemeleri paralel olarak gerçekleştirmek güvenlidir.
// unordered-set-structure.cpp
// compile with: /EHsc
#include <ppl.h>
#include <concurrent_unordered_set.h>
#include <iostream>
using namespace concurrency;
using namespace std;
int wmain()
{
//
// Insert a number of items into the set in parallel.
concurrent_unordered_set<char> set;
parallel_for(0, 10000, [&set](int i) {
set.insert('a' + (i%9)); // Geneate a value in the range [a,i].
});
// Print the elements in the set.
for_each(begin(set), end(set), [](char c) {
wcout << L"[" << c << L"] ";
});
}
/* Sample output:
[e] [i] [a] [c] [g] [f] [b] [d] [h]
*/
[Üst]
concurrent_unordered_multiset Sınıfı
concurrency::concurrent_unordered_multiset sınıfı, yinelenen değerlere izin vermesi dışında sınıfına concurrent_unordered_set benzer. Ayrıca aşağıdaki şekillerde concurrent_unordered_set farklıdır.
concurrent_unordered_multiset::insert yöntemi yerine
std::pair<iterator, bool>bir yineleyici döndürür.concurrent_unordered_multisetsınıfıoperator[]ya daatyöntemini sağlamaz.
Aşağıdaki örnekte kullanmak concurrent_unordered_multisetiçin temel yapı gösterilmektedir. Bu örnek ['a', 'i'] aralığına karakter değerleri ekler.
concurrent_unordered_multiset bir değerin birden çok kez gerçekleşmesini sağlar.
// unordered-set-structure.cpp
// compile with: /EHsc
#include <ppl.h>
#include <concurrent_unordered_set.h>
#include <iostream>
using namespace concurrency;
using namespace std;
int wmain()
{
//
// Insert a number of items into the set in parallel.
concurrent_unordered_multiset<char> set;
parallel_for(0, 40, [&set](int i) {
set.insert('a' + (i%9)); // Geneate a value in the range [a,i].
});
// Print the elements in the set.
for_each(begin(set), end(set), [](char c) {
wcout << L"[" << c << L"] ";
});
}
/* Sample output:
[e] [e] [e] [e] [i] [i] [i] [i] [a] [a] [a] [a] [a] [c] [c] [c] [c] [c] [g] [g]
[g] [g] [f] [f] [f] [f] [b] [b] [b] [b] [b] [d] [d] [d] [d] [d] [h] [h] [h] [h]
*/
[Üst]
combinable Sınıfı
concurrency::combinable sınıfı, ayrıntılı hesaplamalar yapmanıza ve ardından bu hesaplamaları nihai bir sonuçla birleştirmenize olanak tanıyan yeniden kullanılabilir, iş parçacığı yerel depolama alanı sağlar. Nesneyi combinable azaltma değişkeni olarak düşünebilirsiniz.
sınıfı combinable , birkaç iş parçacığı veya görev arasında paylaşılan bir kaynağınız olduğunda kullanışlıdır. sınıfı, combinable paylaşılan kaynaklara kilitsiz bir şekilde erişim sağlayarak paylaşılan durumu ortadan kaldırmanıza yardımcı olur. Bu nedenle, bu sınıf birden çok iş parçacığından paylaşılan verilere erişimi eşitlemek için bir eşitleme mekanizması (örneğin, bir mutex) kullanmaya bir alternatif sağlar.
Yöntemler ve Özellikler
Aşağıdaki tabloda sınıfın önemli yöntemlerinden bazıları gösterilmektedir combinable . Tüm combinable sınıf yöntemleri hakkında daha fazla bilgi için bkz . Birleştirilebilir Sınıf.
| Metot | Açıklama |
|---|---|
| Yerel |
Geçerli iş parçacığı bağlamıyla ilişkili yerel değişkene başvuru alır. |
| berrak |
combinable nesnesinden tüm iş parçacığı yerel değişkenlerini kaldırır. |
|
birleştirmek combine_each |
Sağlanan birleştirme işlevini kullanarak tüm iş parçacığı yerel hesaplamaları kümesinden nihai bir değer oluşturur. |
combinable sınıfı, son birleştirilmiş sonuç üzerinde parametreleştirilmiş bir şablon sınıfıdır. Varsayılan oluşturucuyu çağırırsanız, T şablon parametre türünün varsayılan bir oluşturucu ve bir kopya oluşturucuya sahip olması gerekir.
T Şablon parametre türü varsayılan bir oluşturucuya sahip değilse, oluşturucunun parametresi olarak bir başlatma işlevi alan aşırı yüklenmiş sürümünü çağırın.
Birleştirme veya combine_each yöntemlerini çağırdıktan sonra nesnede combinableek veriler depolayabilirsiniz. Ayrıca combine ve combine_each yöntemlerini birden çok kez çağırabilirsiniz. Nesnedeki combinable hiçbir yerel değer değişmezse ve combinecombine_each yöntemleri her çağrıldıklarında aynı sonucu verir.
Örnekler
sınıfını combinable kullanma hakkında örnekler için aşağıdaki konulara bakın:
Nasıl yapılır: Performansı arttırmak için combinable Kullanma
Nasıl yapılır: Kümeleri Birleştirmek için combinable Kullanma
[Üst]
İlgili Konular
Nasıl yapılır: Etkinliği Arttırmak için Paralel Kapsayıcılar Kullanma
Verileri paralel olarak verimli bir şekilde depolamak ve verilere erişmek için paralel kapsayıcıların nasıl kullanılacağını gösterir.
Nasıl yapılır: Performansı arttırmak için combinable Kullanma
Paylaşılan durumu ortadan kaldırmak ve böylece performansı geliştirmek için sınıfın combinable nasıl kullanılacağını gösterir.
Nasıl yapılır: Kümeleri Birleştirmek için combinable Kullanma
Yerel iş parçacığı veri kümelerini birleştirmek için bir combine işlevinin nasıl kullanılacağını gösterir.
Paralel Desen Kitaplığı (PPL)
Eşzamanlı uygulamalar geliştirmek için ölçeklenebilirliği ve kullanım kolaylığını destekleyen kesinlik temelli bir programlama modeli sağlayan PPL'yi açıklar.
Referans
concurrent_unordered_map Sınıfı
concurrent_unordered_multimap Sınıfı
concurrent_unordered_set Sınıfı