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.
Ad alanında aşağıdaki işlevler kullanılabilir:
Ayırma
Eşzamanlılık Çalışma Zamanı Önbelleğe Alma Alt Bulucusundan belirtilen boyutta bir bellek bloğu ayırır.
void* __cdecl Alloc(size_t _NumBytes);
Parametreler
_NumBytes
Ayrılacak bellek bayt sayısı.
Dönüş Değeri
Yeni ayrılan belleğin işaretçisi.
Açıklamalar
Uygulamanızdaki hangi senaryoların Önbelleğe Alma Alt Bulucu'nun kullanılmasından yararlanabileceği hakkında daha fazla bilgi için bkz . Görev Zamanlayıcı.
asend
Zaman uyumsuz bir gönderme işlemi, verileri hedef bloğa iletmek için bir görev planlar.
template <class T>
bool asend(
_Inout_ ITarget<T>* _Trg,
const T& _Data);
template <class T>
bool asend(
ITarget<T>& _Trg,
const T& _Data);
Parametreler
T
Gönderilecek verilerin türü.
_Trg
Verilerin gönderildiği hedefe ilişkin bir işaretçi veya başvuru.
_Veri
Gönderilecek verilere referans.
Dönüş Değeri
yöntem döndürülmeden önce ileti kabul edildiyse, aksi takdirde.
Açıklamalar
Daha fazla bilgi için bkz . İleti Geçirme İşlevleri.
geçerli görevi iptal et
Şu anda yürütülen görevi iptal eder. Bu işlev, bir görevin içinden çağrılarak görevin yürütülmesini iptal etmek ve onun durumuna geçmesini sağlamak için kullanılabilir.
Gövdesinin içinde değilseniz, bu işlevin bir senaryosu olarak çağrılması desteklenmez. Bunun yapılması, uygulamanızda kilitlenme veya yanıt vermeme gibi tanımsız davranışlara neden olur.
inline __declspec(noreturn) void __cdecl cancel_current_task();
berrak
Eşzamanlı kuyruğu temizleyerek şu anda sıralanan öğeleri yok eder. Bu yöntem eşzamanlılık açısından güvenli değildir.
template<typename T, class _Ax>
void concurrent_queue<T, _Ax>::clear();
Parametreler
T
_Ax
create_async
Kullanıcı tarafından sağlanan lambda veya işlev nesnesine dayanan bir Windows Çalışma Zamanı asenkron yapı oluşturur. Dönüş türü, , , , veya yöntemine geçirilen lambda imzasını temel alan bir seçenektir.
template<typename _Function>
__declspec(noinline) auto create_async(const _Function& _Func)
-> decltype(ref new details::_AsyncTaskGeneratorThunk<_Function>(_Func));
Parametreler
_Fonksiyon
Tür.
_Func
Lambda veya işlev nesnesinden bir Windows Çalışma Zamanı zaman uyumsuz yapı oluşturulacak.
Dönüş Değeri
Zaman uyumsuz bir yapı, IAsyncAction^, IAsyncActionWithProgressTProgress^, IAsyncOperationTResult^ veya IAsyncOperationWithProgressTResult, TProgress^ ile temsil edilir. Döndürülen arabirim, işleve geçirilen lambda imzasına bağlıdır.
Açıklamalar
Lambda'nın dönüş türü, yapının bir eylem mi yoksa bir işlem mi olduğunu belirler.
Geçersiz değer döndüren lambdalar eylemlerin oluşturulmasına neden olur. Türün sonucunu döndüren lambdalar, TResult işlemlerinin oluşturulmasına neden olur.
Lambda, ayrıca zaman uyumsuz çalışmayı kendi içinde kapsülleyen veya bu çalışmayı temsil eden bir görev zincirinin devamı olan bir döndürebilir. Bu durumda, görevlerin zaman uyumsuz şekilde yürütülmesi nedeniyle lambda satır içinde yürütülür ve lambda'nın dönüş türü çözümlendiğinden tarafından döndürülen zaman uyumsuz yapı üretilir. Bu, boş görev döndüren bir lambdanın eylemlerin oluşturulmasına neden olacağı ve TResult görevinidöndüren bir lambda'nın TResult işlemlerinin oluşturulmasına neden olacağı anlamına gelir.
Lambda sıfır, bir veya iki parametre ya da bağımsız değişken alabilir. Geçerli bağımsız değişkenler sırasıyla ve şeklindedir, her ikisi de kullanılıyorsa. Bağımsız değişkenleri olmayan bir lambda, ilerleme raporlama özelliği olmadan zaman uyumsuz bir yapı oluşturulmasına neden olur. Progress_reporter
Lambda veya işlev nesnesinin gövdesi bir sonuç döndürürse (ve bir TResult görevi değilse), çalışma zamanının örtük olarak oluşturduğu bir görev bağlamında, lambda MTA işlemi içinde eşzamansız olarak yürütülür. yöntemi örtük görevin iptalini neden olur.
Lambda gövdesi bir görev döndürürse, lambda satır içinde yürütülür ve lambda'yı türünde bir bağımsız değişken alacak şekilde bildirerek, lambda içinde oluşturduğunuz tüm görevlerin iptalini tetikleyebilirsiniz. Bunları oluştururken bu belirteci geçirerek lambda içinde oluşturduğunuz görevlerin iptalini tetikleyebilirsiniz. Üretilen zaman uyumsuz işlem veya eylemde çağırdığınızda Çalışma Zamanı'nın bir geri çağırma çağırmasına neden olmak için belirteçte yöntemini de kullanabilirsiniz.
Bu işlev yalnızca Windows Çalışma Zamanı uygulamalarda kullanılabilir.
CreateResourceManager
Eşzamanlılık Çalışma Zamanı'nın Resource Manager tekil örneğini temsil eden bir arabirim döndürür. Resource Manager, birbirleriyle işbirliği yapmak isteyen zamanlayıcılara kaynak atamaktan sorumludur.
IResourceManager* __cdecl CreateResourceManager();
Dönüş Değeri
Bir arabirim.
Açıklamalar
Bu yönteme yapılan birden çok sonraki çağrı, aynı Resource Manager örneğini döndürür. Yönteme yapılan her çağrı, Resource Manager üzerindeki referans sayısını artırır ve zamanlayıcınız Resource Manager ile iletişimi tamamladığında IResourceManager::Release yöntemine yapılan bir çağrı ile tamamlanmalıdır.
unsupported_os işletim sistemi Eşzamanlılık Çalışma Zamanı tarafından desteklenmiyorsa ortaya atılır.
görev_oluştur
PPL görev nesnesi oluşturur. bir görev oluşturucu kullanmış olabileceğiniz her yerde kullanılabilir. Kolaylık sağlaması nedeniyle görev oluştururken anahtar sözcüğünün kullanılmasına izin verir.
template<typename T>
__declspec(noinline) auto create_task(T _Param, const task_options& _TaskOptions = task_options())
-> task<typename details::_TaskTypeFromParam<T>::T>;
template<typename _ReturnType>
__declspec( noinline) task<_ReturnType> create_task(const task<_ReturnType>& _Task);
Parametreler
T
Görevin oluşturulacağı parametrenin türü.
_ReturnType
Tür.
_Param
Görevin oluşturulacağı parametre. Bu bir lambda veya işlev nesnesi, task_completion_event nesnesi, farklı bir task nesnesi veya UWP uygulamanızda görevler kullanıyorsanız Windows::Foundation::IAsyncInfo arabirimi olabilir.
_TaskOptions
Görev seçenekleri.
_Görev
Oluşturma görevi.
Dönüş Değeri
türünde, 'den türetilmiş yeni bir görev.
Açıklamalar
İlk aşırı yükleme, tek bir parametre alan bir görev oluşturucu gibi davranır.
İkinci aşırı yükleme, sağlanan iptal belirtecini yeni oluşturulan görevle ilişkilendirir. Bu aşırı yüklemeyi kullanırsanız, ilk parametre olarak farklı bir nesne geçirmenize izin verilmez.
Döndürülen görevin türü, işleve verilen ilk parametreden çıkarılır. bir , bir , veya ya da döndüren bir işlev nesnesi (functor) ise, oluşturulan görevin türü olur.
UWP uygulamasında, eğer _Param Windows::Foundation::IAsyncOperation<T>^, Windows::Foundation::IAsyncOperationWithProgress<T,P>^ türlerinden biri veya bu türlerden birini döndüren bir functor ise, oluşturulan görev task<T> türünde olacaktır.
_Param Windows::Foundation::IAsyncAction^ veya Windows::Foundation::IAsyncActionWithProgress<P>^veya bu türlerden birini döndüren bir functor türündeyse, oluşturulan görevin türü task<void> olacaktır.
İzlemeDevreDışıBırak
Eşzamanlılık Çalışma Zamanı'nda izlemeyi devre dışı bırakır. ETW izlemesi varsayılan olarak kaydedilmediğinden bu işlev kullanım dışıdır.
__declspec(deprecated("Concurrency::DisableTracing is a deprecated function.")) _CRTIMP HRESULT __cdecl DisableTracing();
Dönüş Değeri
İzleme doğru şekilde devre dışı bırakıldıysa, döndürülür. Eğer izleme daha önce başlatılmadıysa, döner.
İzlemeyiEtkinleştir
Eşzamanlılık Çalışma Zamanı'nda izleme özelliğini etkinleştirir. ETW izleme artık varsayılan olarak açık olduğundan bu işlev kullanım dışıdır.
__declspec(deprecated("Concurrency::EnableTracing is a deprecated function.")) _CRTIMP HRESULT __cdecl EnableTracing();
Dönüş Değeri
Tracing doğru başlatıldıysa döndürülür; aksi takdirde döndürülür.
Ücretsiz
Yöntemi tarafından ile önceden ayrılmış bir bellek bloğunu Eşzamanlılık Çalışma Zamanı Önbellek Alt Dağıtıcı'sına serbest bırakır.
void __cdecl Free(_Pre_maybenull_ _Post_invalid_ void* _PAllocation);
Parametreler
_PAllocation
yöntemi tarafından daha önce ayrılmış belleği serbestleştirecek bir işaretçi. parametresi değerine ayarlanırsa, bu yöntem bunu yoksayar ve hemen döndürür.
Açıklamalar
Uygulamanızdaki hangi senaryoların Önbelleğe Alma Alt Bulucu'nun kullanılmasından yararlanabileceği hakkında daha fazla bilgi için bkz . Görev Zamanlayıcı.
get_ambient_scheduler
inline std::shared_ptr<::Concurrency::scheduler_interface> get_ambient_scheduler();
Dönüş Değeri
GetExecutionContextId
Arabirimi uygulayan bir yürütme bağlamı için atanabilen benzersiz bir tanımlayıcı döndürür.
unsigned int __cdecl GetExecutionContextId();
Dönüş Değeri
Yürütme bağlamı için benzersiz tanımlayıcı.
Açıklamalar
IExecutionContext arabirimini Resource Manager tarafından sunulan yöntemlerden herhangi birine parametre olarak geçirmeden önce yürütme bağlamınız için bir tanımlayıcı almak için bu yöntemi kullanın.
GetOSVersion
İşletim sistemi sürümünü döndürür.
IResourceManager::OSVersion __cdecl GetOSVersion();
Dönüş Değeri
İşletim sistemini temsil eden numaralandırılmış değer.
Açıklamalar
unsupported_os işletim sistemi Eşzamanlılık Çalışma Zamanı tarafından desteklenmiyorsa ortaya atılır.
GetProcessorCount
Altta yatan sistemdeki donanım iş parçacığı sayısını döndürür.
unsigned int __cdecl GetProcessorCount();
Dönüş Değeri
Donanımın iş parçacığı sayısı.
Açıklamalar
unsupported_os işletim sistemi Eşzamanlılık Çalışma Zamanı tarafından desteklenmiyorsa ortaya atılır.
İşlemciDüğümSayısınıAl
Temel alınan sistemdeki NUMA düğümlerinin veya işlemci paketlerinin sayısını döndürür.
unsigned int __cdecl GetProcessorNodeCount();
Dönüş Değeri
NUMA düğümlerinin veya işlemci paketlerinin sayısı.
Açıklamalar
Sistem işlemci paketlerinden daha fazla NUMA düğümü içeriyorsa, NUMA düğümlerinin sayısı döndürülür, aksi takdirde işlemci paketlerinin sayısı döndürülür.
unsupported_os işletim sistemi Eşzamanlılık Çalışma Zamanı tarafından desteklenmiyorsa ortaya atılır.
GetSchedulerId
Arabirimi uygulayan bir zamanlayıcıya atanabilen benzersiz bir tanımlayıcı döndürür.
unsigned int __cdecl GetSchedulerId();
Dönüş Değeri
Zamanlayıcı için benzersiz tanımlayıcı.
Açıklamalar
IScheduler arabirimini Resource Manager tarafından sunulan yöntemlerden herhangi birine parametre olarak geçirmeden önce zamanlayıcınızın tanımlayıcısını almak için bu yöntemi kullanın.
internal_assign_iterators (iç atama yineleyicileri)
template<typename T, class _Ax>
template<class _I>
void concurrent_vector<T, _Ax>::internal_assign_iterators(
_I first,
_I last);
Parametreler
T
_Ax
_Ben
birinci
son
kesinti_noktası
İptal için bir kesinti noktası oluşturur. Bu işlevin çağrıldığı bağlamda bir iptal işlemi devam ediyorsa, bu durum, şu anda yürütülen paralel çalışmanın yürütülmesini durduran bir iç özel durum (exception) oluşturarak işlemi sonlandırır. İptal işlemi devam etmiyorsa işlev hiçbir şey yapmaz.
inline void interruption_point();
Açıklamalar
işlevi tarafından atılan iç iptal özel durumunu yakalamamalısınız. İstisna, çalışma zamanı ortamı tarafından yakalanıp işlenir ve bu, programınızın anormal davranmasına neden olabilir.
geçerli görev grubu iptal ediliyor mu
Geçerli bağlamda şu anda satır içi olarak yürütülmekte olan görev grubunun etkin bir iptal sürecinde olup olmadığını (ve kısa süre içinde olma ihtimalinin bulunduğunu) belirten bir gösterge döndürür. Unutmayın ki, geçerli bağlamda şu anda satır içi bir görev grubu yürütülmüyorsa, döndürülecektir.
bool __cdecl is_current_task_group_canceling();
Dönüş Değeri
şu anda yürütülmekte olan görev grubu iptal ediyorsa, aksi takdirde.
Açıklamalar
Daha fazla bilgi için bkz . İptal.
secim_yap
İsteğe bağlı bir veya ile iki veya daha fazla giriş kaynağından bir mesajlaşma bloğu oluşturur.
template<typename T1, typename T2, typename... Ts>
choice<std::tuple<T1, T2, Ts...>> make_choice(
Scheduler& _PScheduler,
T1 _Item1,
T2 _Item2,
Ts... _Items);
template<typename T1, typename T2, typename... Ts>
choice<std::tuple<T1, T2, Ts...>> make_choice(
ScheduleGroup& _PScheduleGroup,
T1 _Item1,
T2 _Item2,
Ts... _Items);
template<typename T1, typename T2, typename... Ts>
choice<std::tuple<T1, T2, Ts...>> make_choice(
T1 _Item1,
T2 _Item2,
Ts... _Items);
Parametreler
T1
İlk kaynağın ileti bloğu türü.
T2
İkinci kaynağın ileti bloğu türü.
_PScheduler
nesnesi, ileti bloğu için yayma görevinin zamanlandığı yerdir.
_Item1
İlk kaynak.
_Item2
İkinci kaynak.
_Eşya
Ek kaynaklar.
_PScheduleGroup
nesnesi, ileti bloğu için yayma görevinin zamanlandığı yerdir. kullanılan nesne zamanlama grubuyla belirtilir.
Dönüş Değeri
İki veya daha fazla giriş kaynağı içeren bir ileti bloğu.
make_greedy_join
İsteğe bağlı bir veya ile iki veya daha fazla giriş kaynağından bir mesajlaşma bloğu oluşturur.
template<typename T1, typename T2, typename... Ts>
multitype_join<std::tuple<T1, T2, Ts...>,greedy> make_greedy_join(
Scheduler& _PScheduler,
T1 _Item1,
T2 _Item2,
Ts... _Items);
template<typename T1, typename T2, typename... Ts>
multitype_join<std::tuple<T1, T2, Ts...>, greedy> make_greedy_join(
ScheduleGroup& _PScheduleGroup,
T1 _Item1,
T2 _Item2,
Ts... _Items);
template<typename T1, typename T2, typename... Ts>
multitype_join<std::tuple<T1, T2, Ts...>, greedy> make_greedy_join(
T1 _Item1,
T2 _Items,
Ts... _Items);
Parametreler
T1
İlk kaynağın ileti bloğu türü.
T2
İkinci kaynağın ileti bloğu türü.
_PScheduler
nesnesi, ileti bloğu için yayma görevinin zamanlandığı yerdir.
_Item1
İlk kaynak.
_Item2
İkinci kaynak.
_Eşya
Ek kaynaklar.
_PScheduleGroup
nesnesi, ileti bloğu için yayma görevinin zamanlandığı yerdir. kullanılan nesne zamanlama grubuyla belirtilir.
Dönüş Değeri
İki veya daha fazla giriş kaynağı içeren bir ileti bloğu.
make_join
İsteğe bağlı bir veya ile iki veya daha fazla giriş kaynağından bir mesajlaşma bloğu oluşturur.
template<typename T1, typename T2, typename... Ts>
multitype_join<std::tuple<T1, T2, Ts...>>
make_join(
Scheduler& _PScheduler,
T1 _Item1,
T2 _Item2,
Ts... _Items);
template<typename T1, typename T2, typename... Ts>
multitype_join<std::tuple<T1, T2, Ts...>> make_join(
ScheduleGroup& _PScheduleGroup,
T1 _Item1,
T2 _Item2,
Ts... _Items);
template<typename T1, typename T2, typename... Ts>
multitype_join<std::tuple<T1, T2, Ts...>> make_join(
T1 _Item1,
T2 _Item2,
Ts... _Items);
Parametreler
T1
İlk kaynağın ileti bloğu türü.
T2
İkinci kaynağın ileti bloğu türü.
_PScheduler
nesnesi, ileti bloğu için yayma görevinin zamanlandığı yerdir.
_Item1
İlk kaynak.
_Item2
İkinci kaynak.
_Eşya
Ek kaynaklar.
_PScheduleGroup
nesnesi, ileti bloğu için yayma görevinin zamanlandığı yerdir. kullanılan nesne zamanlama grubuyla belirtilir.
Dönüş Değeri
İki veya daha fazla giriş kaynağı içeren bir ileti bloğu.
görev_oluştur
nesnesi oluşturmak için bir fabrika yöntemi.
template <class _Function>
task_handle<_Function> make_task(const _Function& _Func);
Parametreler
_Fonksiyon
Çalışmayı temsil eden nesnesini yürütmek için çağrılacak olan işlev nesnesinin türü.
_Func
Çalışmayı yürütmek için nesnesi tarafından temsil edilen işlev çağrılacak. Bu bir lambda functor, bir işlev işaretçisi veya işlev çağrısı işlecinin imzalı bir sürümünü destekleyen herhangi bir nesne olabilir.
Dönüş Değeri
Bir nesnesi.
Açıklamalar
Lambda ifadesine sahip bir nesne oluşturmanız gerektiğinde bu işlev yararlıdır, çünkü lambda functor'ın gerçek türünü bilmeden nesneyi oluşturmanıza olanak tanır.
parallel_buffered_sort
Belirtilen aralıktaki öğeleri azalan olmayan bir düzende veya ikili koşul tarafından belirtilen sıralama ölçütüne göre paralel olarak düzenler. Bu işlev, ek alana ihtiyaç duyması dışında karşılaştırma tabanlı, kararsız, yerinde sıralamaya benzer ve sıralanan öğeler için varsayılan başlatma gerektirir.
template<typename _Random_iterator>
inline void parallel_buffered_sort(
const _Random_iterator& _Begin,
const _Random_iterator& _End);
template<typename _Allocator,
typename _Random_iterator>
inline void parallel_buffered_sort(
const _Random_iterator& _Begin,
const _Random_iterator& _End);
template<typename _Allocator,
typename _Random_iterator>
inline void parallel_buffered_sort(
const _Allocator& _Alloc,
const _Random_iterator& _Begin,
const _Random_iterator& _End);
template<typename _Random_iterator,
typename _Function>
inline void parallel_buffered_sort(
const _Random_iterator& _Begin,
const _Random_iterator& _End,
const _Function& _Func,
const size_t _Chunk_size = 2048);
template<typename _Allocator,
typename _Random_iterator,
typename _Function>
inline void parallel_buffered_sort(
const _Random_iterator& _Begin,
const _Random_iterator& _End,
const _Function& _Func,
const size_t _Chunk_size = 2048);
template<typename _Allocator,
typename _Random_iterator,
typename _Function>
inline void parallel_buffered_sort(
const _Allocator& _Alloc,
const _Random_iterator& _Begin,
const _Random_iterator& _End,
const _Function& _Func,
const size_t _Chunk_size = 2048);
Parametreler
_Random_iterator
Giriş aralığının yineleyici türü.
_Ayırıcı
C++ Standart Kitaplığı uyumlu bellek ayırıcısının türü.
_Fonksiyon
İkili karşılaştırıcının türü.
_Başla
Sıralanacak aralıktaki ilk öğenin konumunu ele alan rastgele erişim yineleyicisi.
_Son
Sıralanacak aralıktaki son öğeyi geçen konumu ele alan rastgele erişim yineleyicisi.
_Alloc
C++ Standart Kitaplığı uyumlu bellek ayırıcısının örneği.
_Func
Sıralamadaki ardışık öğeler tarafından karşılanacak karşılaştırma ölçütlerini tanımlayan kullanıcı tanımlı koşul işlev nesnesi. İkili bağıntı iki bağımsız değişken alır ve tatmin olduğunda , tatmin olmadığında ise döndürür. Bu karşılaştırıcı işlevi, dizideki öğe çiftlerine katı bir zayıf sıralama uygulamalıdır.
_Chunk_size
İki parçaya bölünecek bir öbeğin paralel yürütme amacıyla minimum boyutu.
Açıklamalar
Tüm aşırı yüklemeler, sıralanacak öğe sayısı olan ve öğe türü olan için ek alan gerektirir. Çoğu durumda parallel_buffered_sort, parallel_sort'a kıyasla performansta bir iyileşme gösterir ve eğer yeterli belleğiniz varsa, parallel_sort yerine bunu tercih etmelisiniz.
Sağlamazsanız, varsayılan olarak kullanılır ve bu, öğe türünün işlecini sağlamasını gerektirir.
Eğer bir bellek ayırıcı türü veya örneği sağlamazsanız, arabelleği ayırmak için C++ Standart Kütüphane bellek ayırıcısı kullanılır.
Algoritma, giriş aralığını iki öbeke böler ve her öbekleri paralel olarak yürütülmesi için iki alt öbek halinde ardışık olarak böler. İsteğe bağlı bağımsız değişken , algoritmaya boyut öbeklerini seri olarak işlemesi gerektiğini belirtmek için kullanılabilir.
parallel_for
bir dizi dizin üzerinde yinelenir ve her yinelemede paralel olarak kullanıcı tarafından sağlanan bir işlevi yürütür.
template <typename _Index_type, typename _Function, typename _Partitioner>
void parallel_for(
_Index_type first,
_Index_type last,
_Index_type _Step,
const _Function& _Func,
_Partitioner&& _Part);
template <typename _Index_type, typename _Function>
void parallel_for(
_Index_type first,
_Index_type last,
_Index_type _Step,
const _Function& _Func);
template <typename _Index_type, typename _Function>
void parallel_for(
_Index_type first,
_Index_type last,
const _Function& _Func,
const auto_partitioner& _Part = auto_partitioner());
template <typename _Index_type, typename _Function>
void parallel_for(
_Index_type first,
_Index_type last,
const _Function& _Func,
const static_partitioner& _Part);
template <typename _Index_type, typename _Function>
void parallel_for(
_Index_type first,
_Index_type last,
const _Function& _Func,
const simple_partitioner& _Part);
template <typename _Index_type, typename _Function>
void parallel_for(
_Index_type first,
_Index_type last,
const _Function& _Func,
affinity_partitioner& _Part);
Parametreler
_Indeks_türü
Yineleme için kullanılan indeksin türü.
_Fonksiyon
Her yinelemede yürütülecek işlevin türü.
_Partitioner
Sağlanan aralığı bölümlendirmek için kullanılan bölümleyicinin türü.
birinci
Yinelemeye dahil edilecek ilk dizin.
son
Yinelemeye dahil edilecek son dizinden bir sonraki dizin.
_Adım
'dan 'e yinelenirken adım atılan değer. Adım pozitif olmalıdır. invalid_argument hatası, adım 1'den küçükse atılır.
_Func
Her yinelemede yürütülecek işlev. Bu bir lambda ifadesi, işlev işaretçisi veya işlev çağrısı işlecinin imzalı bir sürümünü destekleyen herhangi bir nesne olabilir.
_Kısım
Bölümleyici nesnesine referans. Bağımsız değişken auto_partitioner, static_partitioner, simple_partitioner veya affinity_partitioner olabilir. Eğer bir affinity_partitioner nesnesi kullanılıyorsa, algoritmanın gelecekteki döngülerin durumunu yeniden kullanabilmesi için başvurunun sabit olmayan bir l-değer referansı olması gerekir.
Açıklamalar
Daha fazla bilgi için bkz . Paralel Algoritmalar.
parallel_for_each
bir aralıktaki her öğeye paralel olarak belirtilen bir işlevi uygular. ad alanındaki işleve anlamsal olarak eşdeğerdir, ancak öğeler üzerindeki yineleme paralel olarak gerçekleştirilir ve yineleme sırası belirtilmemiştir. Bağımsız değişken , parametrenin olduğu ve yinelenen kapsayıcının öğe türü olarak tanımlandığı şeklindeki işlev çağrısı işlecini desteklemelidir.
template <typename _Iterator, typename _Function>
void parallel_for_each(
_Iterator first,
_Iterator last,
const _Function& _Func);
template <typename _Iterator, typename _Function, typename _Partitioner>
void parallel_for_each(
_Iterator first,
_Iterator last,
const _Function& _Func,
_Partitioner&& _Part);
Parametreler
_Iterator
Kapsayıcı üzerinde yinelemek için kullanılan yineleyicinin türü.
_Fonksiyon
Belirtilen aralıktaki her öğeye uygulanacak fonksiyonun türü.
_Partitioner
birinci
Paralel yinelemeye dahil edilecek ilk öğenin konumunu ele alan bir yineleyici.
son
Paralel yinelemede dahil edilen son öğeden sonraki konumu işaret eden bir yineleyici.
_Func
Aralıktaki her öğeye uygulanan kullanıcı tanımlı işlev nesnesi.
_Kısım
Bölümleyici nesnesine referans. Bağımsız değişken auto_partitioner, static_partitioner, simple_partitioner veya affinity_partitioner olabilir. Eğer bir affinity_partitioner nesnesi kullanılıyorsa, algoritmanın gelecekteki döngülerin durumunu yeniden kullanabilmesi için başvurunun sabit olmayan bir l-değer referansı olması gerekir.
Açıklamalar
auto_partitioner, açık bir bölümleyici olmadan aşırı yükleme için kullanılır.
Rastgele erişimi desteklemeyen yineleyiciler için yalnızca auto_partitioner desteklenir.
Daha fazla bilgi için bkz . Paralel Algoritmalar.
parallel_invoke
Parametre olarak sağlanan işlev nesnelerini paralel olarak yürütür ve yürütmeyi tamamlayana kadar bloklar. Her işlev nesnesi bir lambda ifadesi, işlev işaretçisi veya imzalı işlev çağrısı işlecini destekleyen herhangi bir nesne olabilir.
template <typename _Function1, typename _Function2>
void parallel_invoke(
const _Function1& _Func1,
const _Function2& _Func2);
template <typename _Function1, typename _Function2, typename _Function3>
void parallel_invoke(
const _Function1& _Func1,
const _Function2& _Func2,
const _Function3& _Func3);
template <typename _Function1,
typename _Function2,
typename _Function3,
typename _Function4>
void parallel_invoke(
const _Function1& _Func1,
const _Function2& _Func2,
const _Function3& _Func3,
const _Function4& _Func4);
template <typename _Function1,
typename _Function2,
typename _Function3,
typename _Function4,
typename _Function5>
void parallel_invoke(
const _Function1& _Func1,
const _Function2& _Func2,
const _Function3& _Func3,
const _Function4& _Func4,
const _Function5& _Func5);
template <typename _Function1,
typename _Function2,
typename _Function3,
typename _Function4,
typename _Function5,
typename _Function6>
void parallel_invoke(
const _Function1& _Func1,
const _Function2& _Func2,
const _Function3& _Func3,
const _Function4& _Func4,
const _Function5& _Func5,
const _Function6& _Func6);
template <typename _Function1,
typename _Function2,
typename _Function3,
typename _Function4,
typename _Function5,
typename _Function6,
typename _Function7>
void parallel_invoke(
const _Function1& _Func1,
const _Function2& _Func2,
const _Function3& _Func3,
const _Function4& _Func4,
const _Function5& _Func5,
const _Function6& _Func6,
const _Function7& _Func7);
template <typename _Function1,
typename _Function2,
typename _Function3,
typename _Function4,
typename _Function5,
typename _Function6,
typename _Function7,
typename _Function8>
void parallel_invoke(
const _Function1& _Func1,
const _Function2& _Func2,
const _Function3& _Func3,
const _Function4& _Func4,
const _Function5& _Func5,
const _Function6& _Func6,
const _Function7& _Func7,
const _Function8& _Func8);
template <typename _Function1,
typename _Function2,
typename _Function3,
typename _Function4,
typename _Function5,
typename _Function6,
typename _Function7,
typename _Function8,
typename _Function9>
void parallel_invoke(
const _Function1& _Func1,
const _Function2& _Func2,
const _Function3& _Func3,
const _Function4& _Func4,
const _Function5& _Func5,
const _Function6& _Func6,
const _Function7& _Func7,
const _Function8& _Func8,
const _Function9& _Func9);
template <typename _Function1,
typename _Function2,
typename _Function3,
typename _Function4,
typename _Function5,
typename _Function6,
typename _Function7,
typename _Function8,
typename _Function9,
typename _Function10>
void parallel_invoke(
const _Function1& _Func1,
const _Function2& _Func2,
const _Function3& _Func3,
const _Function4& _Func4,
const _Function5& _Func5,
const _Function6& _Func6,
const _Function7& _Func7,
const _Function8& _Func8,
const _Function9& _Func9,
const _Function10& _Func10);
Parametreler
_Function1
Paralel olarak yürütülecek ilk işlev nesnesinin türü.
_Function2
Paralel olarak yürütülecek ikinci işlev nesnesinin türü.
_Function3
Paralel olarak yürütülecek üçüncü işlev nesnesinin türü.
_Function4
Paralel olarak yürütülecek dördüncü işlev nesnesinin türü.
_Function5
Paralel olarak yürütülecek beşinci işlev nesnesinin türü.
_Function6
Paralel olarak yürütülecek altıncı işlev nesnesinin türü.
_Function7
Paralel olarak yürütülecek yedinci işlev nesnesinin türü.
_Function8
Paralel olarak yürütülecek sekizinci işlev nesnesinin türü.
_Function9
Paralel olarak yürütülecek dokuzuncu işlev nesnesinin türü.
_Function10
Paralel olarak yürütülecek onuncu işlev nesnesinin türü.
_Func1
Paralel olarak yürütülecek ilk işlev nesnesi.
_Func2
Paralel olarak yürütülecek ikinci işlev nesnesi.
_Func3
Paralel olarak yürütülecek üçüncü işlev nesnesi.
_Func4
Paralel olarak yürütülecek dördüncü işlev nesnesi.
_Func5
Paralel olarak yürütülecek beşinci işlev nesnesi.
_Func6
Paralel olarak yürütülecek altıncı işlev nesnesi.
_Func7
Paralel olarak yürütülecek yedinci işlev nesnesi.
_Func8
Paralel olarak yürütülecek sekizinci işlev nesnesi.
_Func9
Paralel olarak yürütülecek dokuzuncu işlev nesnesi.
_Func10
Paralel olarak yürütülecek onuncu işlev nesnesi.
Açıklamalar
Parametre olarak sağlanan bir veya daha fazla işlev nesnesinin çağırma bağlamında satır içinde yürütülebileceğini unutmayın.
Bu işleve parametre olarak geçirilen işlev nesnelerinden biri veya daha fazlası bir özel durum oluşturursa, çalışma zamanı seçtiği böyle bir özel durumu çağrısından dışarı iletir.
Daha fazla bilgi için bkz . Paralel Algoritmalar.
parallel_radixsort
Bir radix sıralama algoritması kullanarak belirtilen aralıktaki öğeleri azalan olmayan bir düzende düzenler. Bu, öğeleri işaretsiz tamsayı benzeri anahtarlara sıralanabilen bir projeksiyon işlevi gerektiren kararlı bir sıralama işlevidir. Sıralanan öğeler için varsayılan başlatma gereklidir.
template<typename _Random_iterator>
inline void parallel_radixsort(
const _Random_iterator& _Begin,
const _Random_iterator& _End);
template<typename _Allocator, typename _Random_iterator>
inline void parallel_radixsort(
const _Random_iterator& _Begin,
const _Random_iterator& _End);
template<typename _Allocator, typename _Random_iterator>
inline void parallel_radixsort(
const _Allocator& _Alloc,
const _Random_iterator& _Begin,
const _Random_iterator& _End);
template<typename _Random_iterator, typename _Function>
inline void parallel_radixsort(
const _Random_iterator& _Begin,
const _Random_iterator& _End,
const _Function& _Proj_func,
const size_t _Chunk_size = 256* 256);
template<typename _Allocator, typename _Random_iterator,
typename _Function>
inline void parallel_radixsort(
const _Random_iterator& _Begin,
const _Random_iterator& _End,
const _Function& _Proj_func,
const size_t _Chunk_size = 256* 256);
template<typename _Allocator,
typename _Random_iterator,
typename _Function>
inline void parallel_radixsort(
const _Allocator& _Alloc,
const _Random_iterator& _Begin,
const _Random_iterator& _End,
const _Function& _Proj_func,
const size_t _Chunk_size = 256* 256);
Parametreler
_Random_iterator
Giriş aralığının yineleyici türü.
_Ayırıcı
C++ Standart Kitaplığı uyumlu bellek ayırıcısının türü.
_Fonksiyon
Projeksiyon işlevinin türü.
_Başla
Sıralanacak aralıktaki ilk öğenin konumunu ele alan rastgele erişim yineleyicisi.
_Son
Sıralanacak aralıktaki son öğeyi geçen konumu ele alan rastgele erişim yineleyicisi.
_Alloc
C++ Standart Kitaplığı uyumlu bellek ayırıcısının örneği.
_Proj_func
Bir öğeyi integral değerine dönüştüren kullanıcı tanımlı projeksiyon işlevi nesnesi.
_Chunk_size
İki parçaya bölünecek bir öbeğin paralel yürütme amacıyla minimum boyutu.
Açıklamalar
Tüm aşırı yüklemeler, sıralanacak öğe sayısı olan ve öğe türü olan için ek alan gerektirir. Tekil bir projeksiyon funktörü , bir öğe verildiğinde bir anahtar döndürmelidir; burada öğe türüdür ve işaretsiz tamsayı benzeri bir türdür.
Projeksiyon işlevi sağlamazsanız, tam sayı türleri için yalnızca öğesini döndüren varsayılan bir projeksiyon işlevi kullanılır. bir yansıtma işlevinin yokluğunda öğe tam sayı türünde değilse işlev derlenemiyor.
Eğer bir bellek ayırıcı türü veya örneği sağlamazsanız, arabelleği ayırmak için C++ Standart Kütüphane bellek ayırıcısı kullanılır.
Algoritma, giriş aralığını iki öbeke böler ve her öbekleri paralel olarak yürütülmesi için iki alt öbek halinde ardışık olarak böler. İsteğe bağlı bağımsız değişken , algoritmaya boyut öbeklerini seri olarak işlemesi gerektiğini belirtmek için kullanılabilir.
parallel_reduce
Ardışık kısmi toplamları hesaplayarak belirtilen aralıktaki tüm öğelerin toplamını hesaplar veya paralel olarak sum dışında belirtilen bir ikili işlem kullanılarak benzer şekilde elde edilen ardışık kısmi sonuçların sonucunu hesaplar. , ile, ikili işlemin ilişkilendirilebilir olmasını gerektirmesi ve ilk değer yerine kimlik değeri gerektirmesi dışında benzerdir.
template<typename _Forward_iterator>
inline typename std::iterator_traits<_Forward_iterator>::value_type parallel_reduce(
_Forward_iterator _Begin,
_Forward_iterator _End,
const typename std::iterator_traits<_Forward_iterator>::value_type& _Identity);
template<typename _Forward_iterator, typename _Sym_reduce_fun>
inline typename std::iterator_traits<_Forward_iterator>::value_type parallel_reduce(
_Forward_iterator _Begin,
_Forward_iterator _End,
const typename std::iterator_traits<_Forward_iterator>::value_type& _Identity,
_Sym_reduce_fun _Sym_fun);
template<typename _Reduce_type,
typename _Forward_iterator,
typename _Range_reduce_fun,
typename _Sym_reduce_fun>
inline _Reduce_type parallel_reduce(
_Forward_iterator _Begin,
_Forward_iterator _End,
const _Reduce_type& _Identity,
const _Range_reduce_fun& _Range_fun,
const _Sym_reduce_fun& _Sym_fun);
Parametreler
_Forward_iterator
Giriş aralığının yineleyici türü.
_Sym_reduce_fun
Simetrik azaltma işlevinin türü. Bu, imzasına sahip bir fonksiyon türü olmalıdır ve burada _Reduce_type, kimlik türü ve azaltmanın sonuç türüyle aynıdır. Üçüncü aşırı yükleme için bu, çıkış türüyle tutarlı olmalıdır.
_Azaltma_türü
Girişin azaltılacağı tür; giriş öğesi türünden farklı olabilir. Dönüş değeri ve kimlik değeri bu türe sahip olacaktır.
_Range_reduce_fun
Aralık azaltma işlevinin türü. Bu, imzası olan bir işlev türü olmalıdır _Reduce_type kimlik türüyle ve azaltmanın sonuç türüyle aynıdır.
_Başla
Azaltılacak aralıktaki ilk öğeyi ele alan bir giriş yineleyicisi.
_Son
Azaltılacak aralıktaki son öğenin ötesindeki bir konum olan öğeyi ele alan bir giriş yineleyicisi.
_Kimlik
Kimlik değeri , azaltmanın sonuç türüyle ve ayrıca birinci ve ikinci aşırı yüklemeler için yineleyicinin türüyle aynı türdedir. Üçüncü aşırı yükleme için kimlik değerinin azaltmanın sonuç türüyle aynı türde olması gerekir, ancak yineleyicinin türünden farklı olabilir. Uygun bir değere sahip olmalıdır; aralık azaltma işleci , tek bir öğe türüne ve kimlik değerine uygulandığında, değerin türünden kimlik türüne tür ataması gibi davranır.
_Sym_fun
Azaltmanın ikincisinde kullanılacak simetrik işlev. Daha fazla bilgi için Açıklamalar'a bakın.
_Range_fun
Azaltmanın ilk aşamasında kullanılacak işlev. Daha fazla bilgi için Açıklamalar'a bakın.
Dönüş Değeri
Azaltmanın sonucu.
Açıklamalar
Paralel azaltma gerçekleştirmek için işlev, temel zamanlayıcı için kullanılabilir çalışan sayısına göre aralığı öbeklere böler. Azaltma iki aşamada gerçekleşir, ilk aşama her öbek içinde bir azaltma gerçekleştirir ve ikinci aşama her öbekten alınan kısmi sonuçlar arasında bir azaltma gerçekleştirir.
İlk aşırı yükleme, yineleyicinin , değerinin kimlik değeri türüyle ve azaltma sonuç türüyle aynı olmasını gerektirir. T öğe türü, her öbekteki öğeleri azaltmak için işleci sağlamalıdır. İkinci aşamada da aynı işleç kullanılır.
İkinci aşırı yükleme, yineleyicinin kimlik değeri türüyle ve azaltma sonuç türüyle aynı olmasını da gerektirir. Sağlanan ikili işleç , her iki azaltma aşamasında da kullanılır ve kimlik değeri ilk aşama için ilk değer olarak kullanılır.
Üçüncü aşırı yükleme için kimlik değeri türünün azaltma sonuç türüyle aynı olması gerekir, ancak yineleyicinin türü her ikisinden de farklı olabilir. Aralık azaltma işlevi ilk aşamada kimlik değeri ilk değer olarak kullanılır ve ikili işlevi ikinci aşamadaki alt sonuçlara uygulanır.
parallel_sort
Belirtilen aralıktaki öğeleri azalan olmayan bir düzende veya ikili koşul tarafından belirtilen sıralama ölçütüne göre paralel olarak düzenler. Bu fonksiyon, ile semantik olarak şu yönlerden benzerdir: karşılaştırma tabanlı, durağansız ve yerinde gerçekleştirilen bir sıralama.
template<typename _Random_iterator>
inline void parallel_sort(
const _Random_iterator& _Begin,
const _Random_iterator& _End);
template<typename _Random_iterator,typename _Function>
inline void parallel_sort(
const _Random_iterator& _Begin,
const _Random_iterator& _End,
const _Function& _Func,
const size_t _Chunk_size = 2048);
Parametreler
_Random_iterator
Giriş aralığının yineleyici türü.
_Fonksiyon
İkili karşılaştırma funktörünün türü.
_Başla
Sıralanacak aralıktaki ilk öğenin konumunu ele alan rastgele erişim yineleyicisi.
_Son
Sıralanacak aralıktaki son öğeyi geçen konumu ele alan rastgele erişim yineleyicisi.
_Func
Sıralamadaki ardışık öğeler tarafından karşılanacak karşılaştırma ölçütlerini tanımlayan kullanıcı tanımlı koşul işlev nesnesi. İkili bağıntı iki bağımsız değişken alır ve tatmin olduğunda , tatmin olmadığında ise döndürür. Bu karşılaştırıcı işlevi, dizideki öğe çiftlerine katı bir zayıf sıralama uygulamalıdır.
_Chunk_size
İkiye bölünerek paralel yürütülecek bir bölümün minimum boyutu.
Açıklamalar
İlk aşırı yükleme ikili karşılaştırıcısını kullanır.
Sağlanan ikili karşılaştırıcıyı kullanan ikinci aşırı yüklenmiş fonksiyon, giriş aralığındaki öğelerin türü olduğunda imzasına sahip olmalıdır.
Algoritma, giriş aralığını iki öbeke böler ve her öbekleri paralel olarak yürütülmesi için iki alt öbek halinde ardışık olarak böler. İsteğe bağlı bağımsız değişken , algoritmaya boyut öbeklerini seri olarak işlemesi gerektiğini belirtmek için kullanılabilir.
parallel_transform (paralel dönüştürme)
Belirtilen işlev nesnesini bir kaynak aralıktaki her öğeye veya iki kaynak aralıktaki bir öğe çiftine uygular ve işlev nesnesinin dönüş değerlerini paralel olarak bir hedef aralığa kopyalar. Bu işlev, ile semantik olarak eşdeğerdir.
template <typename _Input_iterator1,
typename _Output_iterator,
typename _Unary_operator>
_Output_iterator parallel_transform(
_Input_iterator1 first1,
_Input_iterator1 last1,
_Output_iterator _Result,
const _Unary_operator& _Unary_op,
const auto_partitioner& _Part = auto_partitioner());
template <typename _Input_iterator1,
typename _Output_iterator,
typename _Unary_operator>
_Output_iterator parallel_transform(
_Input_iterator1 first1,
_Input_iterator1 last1,
_Output_iterator _Result,
const _Unary_operator& _Unary_op,
const static_partitioner& _Part);
template <typename _Input_iterator1,
typename _Output_iterator,
typename _Unary_operator>
_Output_iterator parallel_transform(
_Input_iterator1 first1,
_Input_iterator1 last1,
_Output_iterator _Result,
const _Unary_operator& _Unary_op,
const simple_partitioner& _Part);
template <typename _Input_iterator1,
typename _Output_iterator,
typename _Unary_operator>
_Output_iterator parallel_transform(
_Input_iterator1 first1,
_Input_iterator1 last1,
_Output_iterator _Result,
const _Unary_operator& _Unary_op,
affinity_partitioner& _Part);
template <typename _Input_iterator1,
typename _Input_iterator2,
typename _Output_iterator,
typename _Binary_operator,
typename _Partitioner>
_Output_iterator parallel_transform(
_Input_iterator1 first1,
_Input_iterator1 last1,
_Input_iterator2
first2,
_Output_iterator _Result,
const _Binary_operator& _Binary_op,
_Partitioner&& _Part);
template <typename _Input_iterator1,
typename _Input_iterator2,
typename _Output_iterator,
typename _Binary_operator>
_Output_iterator parallel_transform(
_Input_iterator1 first1,
_Input_iterator1 last1,
_Input_iterator2
first2,
_Output_iterator _Result,
const _Binary_operator& _Binary_op);
Parametreler
_Input_iterator1
İlk veya yalnızca giriş yineleyicisinin türü.
_Output_iterator
Çıkış yineleyicisinin türü.
_Unary_operator
Giriş aralığındaki her öğede yürütülecek üniter işlev nesnesinin türü.
_Input_iterator2
İkinci giriş yineleyicisinin türü.
_Binary_operator
İki kaynak aralığındaki öğelerde çift yönlü olarak yürütülen ikili funktör türü.
_Partitioner
ilk1
Çalıştırılacak ilk veya tek kaynak aralığındaki ilk öğenin konumunu ele alan bir giriş yineleyicisi.
son1
İşlenecek ilk veya tek kaynak aralığındaki son öğeden sonraki konumda bulunan bir giriş yineleyicisi.
_Sonuç
Hedef aralıktaki ilk öğenin konumunu ele alan bir çıkış yineleyicisi.
_Unary_op
Kaynak aralıktaki her öğeye uygulanan kullanıcı tanımlı bir tekli işlev nesnesi.
_Kısım
Bölümleyici nesnesine referans. Bağımsız değişken auto_partitioner, static_partitioner, simple_partitioner veya affinity_partitioner olabilir. Eğer bir affinity_partitioner nesnesi kullanılıyorsa, algoritmanın gelecekteki döngülerin durumunu yeniden kullanabilmesi için başvurunun sabit olmayan bir l-değer referansı olması gerekir.
first2
çalıştırılacak ikinci kaynak aralığındaki ilk öğenin konumunu ele alan bir giriş yineleyicisi.
_Binary_op
İki kaynak aralığına çift yönlü, ileriye doğru uygulanan kullanıcı tanımlı ikili işlev nesnesi.
Dönüş Değeri
İşlev nesnesi tarafından dönüştürülen çıkış öğelerini alan hedef aralıktaki son öğeden bir sonraki konumunu ele alan bir çıkış iteratorü.
Açıklamalar
auto_partitioner, açık bir bölümleyici bağımsız değişkeni olmadan aşırı yüklemeler için kullanılır.
Rastgele erişimi desteklemeyen yineleyiciler için yalnızca auto_partitioner desteklenir.
Argümanını alan aşırı yüklemeler, giriş aralığındaki her öğeye tekli bir functor uygulayarak giriş aralığını çıkış aralığına dönüştürür. , yinelenen aralığın değer türü olan, imzalı işlev çağrısı işlecini desteklemelidir.
Argümanı alan aşırı yüklemeler, ikili funktörü ilk giriş aralığından bir öğeye ve ikinci giriş aralığından bir öğeye uygulayarak, iki giriş aralığını çıkış aralığına işler. , iki giriş yineleyicisinin değer türleri olan imzalı işlev çağrısı işlecini desteklemelidir.
Daha fazla bilgi için bkz . Paralel Algoritmalar.
almak
Bağlamın tam olarak bir kaynaktan gelen verileri beklemesini ve kabul edilen değerleri filtrelemesini sağlayan genel bir alma uygulaması.
template <class T>
T receive(
_Inout_ ISource<T>* _Src,
unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE);
template <class T>
T receive(
_Inout_ ISource<T>* _Src,
typename ITarget<T>::filter_method const& _Filter_proc,
unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE);
template <class T>
T receive(
ISource<T>& _Src,
unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE);
template <class T>
T receive(
ISource<T>& _Src,
typename ITarget<T>::filter_method const& _Filter_proc,
unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE);
Parametreler
T
Yük türü.
_Src
Verilerin beklendiği kaynağa ilişkin bir işaretçi veya başvuru.
_Zaman aşımı
Yöntemin veri üzerinde uygulanması gereken azami süre, milisaniye cinsinden.
_Filter_proc
İletilerin kabul edilip edilmeyeceğini belirleyen bir filtre işlevi.
Dönüş Değeri
Kaynaktan, yük türündeki bir değer.
Açıklamalar
parametresi sabiti dışında bir değere sahipse, ileti alınmadan önce belirtilen süre dolarsa özel durum operation_timed_out oluşturulur. Sıfır uzunluklu bir zaman aşımı istiyorsanız, zaman aşımı süresi sıfır olan fonksiyonunu çağırmak yerine try_receive fonksiyonunu kullanmalısınız, çünkü bu yöntem daha verimlidir ve zaman aşımında istisna fırlatmaz.
Daha fazla bilgi için bkz . İleti Geçirme İşlevleri.
çalıştır_iptal_jetonu_ile
Bir işlev nesnesini verilen iptal belirteci bağlamında hemen ve zaman uyumlu olarak yürütür.
template<typename _Function>
void run_with_cancellation_token(
const _Function& _Func,
cancellation_token _Ct);
Parametreler
_Fonksiyon
Çağrılacak işlev nesnesinin türü.
_Func
Yürütülecek işlev nesnesi. Bu nesne void(void) imzasıyla işlev çağrısı işlecini desteklemelidir.
_Ct
İşlev nesnesinin örtük iptalini denetleyen iptal belirteci. Üst görev grubu tarafından iptal edilme olasılığı olmaksızın işlevin yürütülmesini istiyorsanız kullanın.
Açıklamalar
iptal edildiğinde işlev nesnesindeki tüm kesinti noktaları tetiklenir. Ebeveyn belirteci farklı bir belirtece sahip veya belirteci yoksa, belirgin belirteç bu 'yi ebeveyn iptalinden yalıtır.
Gönder
Hedef iletiyi kabul edene veya reddedene kadar bekleyen zaman uyumlu gönderme işlemi.
template <class T>
bool send(_Inout_ ITarget<T>* _Trg, const T& _Data);
template <class T>
bool send(ITarget<T>& _Trg, const T& _Data);
Parametreler
T
Yük türü.
_Trg
Verilerin gönderildiği hedefe ilişkin bir işaretçi veya başvuru.
_Veri
Gönderilecek verilere referans.
Dönüş Değeri
ileti kabul edildiyse, aksi takdirde.
Açıklamalar
Daha fazla bilgi için bkz . İleti Geçirme İşlevleri.
set_ambient_scheduler
inline void set_ambient_scheduler(std::shared_ptr<::Concurrency::scheduler_interface> _Scheduler);
Parametreler
_Zamanlayıcı
Ayarlanacağı ortam zamanlayıcısı.
görev_yürütme_kaynaklarını_ayarla
Eşzamanlılık Çalışma Zamanı iç çalışan iş parçacıkları tarafından kullanılan yürütme kaynaklarını belirtilen benşim kümesiyle kısıtlar.
Bu yöntemi yalnızca Resource Manager oluşturulmadan önce veya iki Resource Manager yaşam süresi arasında çağırmak geçerlidir. çağrı sırasında Resource Manager olmadığı sürece birden çok kez çağrılabilir. Yakınlık sınırı belirlendikten sonra, bir sonraki geçerli çağrı yöntemine kadar etkin kalır.
Sağlanan ilişkili tür maskesinin, işlem ilişkili tür maskesinin alt kümesi olması zorunlu değildir. Gerekirse işlem bağımlılığı güncelleştirilir.
void __cdecl set_task_execution_resources(
DWORD_PTR _ProcessAffinityMask);
void __cdecl set_task_execution_resources(
unsigned short count,
PGROUP_AFFINITY _PGroupAffinity);
Parametreler
_ProcessAffinityMask
Eşzamanlılık Çalışma Zamanı çalışan iş parçacıklarının kısıtlanması gereken benşim maskesi. Bu yöntemi yalnızca Eşzamanlılık Çalışma Zamanı'nı geçerli işlemci grubunun bir alt kümesiyle sınırlamak istiyorsanız 64'ten fazla donanım iş parçacığına sahip bir sistemde kullanın. Genel olarak, 64'ten fazla donanım iş parçacığına sahip makinelerde bennizimi kısıtlamak için yöntemin bir grup beniniteleri dizisini parametre olarak kabul eden sürümünü kullanmanız gerekir.
sayı
parametresi tarafından belirtilen dizideki girdilerin sayısı.
_PGroupAffinity
Bir girdisi dizisi.
Açıklamalar
Yöntem, çağrıldığında bir Resource Manager varsa invalid_operation özel durumu ve belirtilen uygunluğun boş bir kaynak kümesine neden olması durumunda bir invalid_argument özel durumu oluşturur.
Parametre olarak grup benzimleri dizisi alan yöntemin sürümü yalnızca sürüm Windows 7 veya üzeri olan işletim sistemlerinde kullanılmalıdır. Aksi takdirde, bir invalid_operation özel durumu oluşturulur.
Bu yöntem çağrıldıktan sonra, işlem bağımlılığını program aracılığıyla değiştirmek, Resource Manager'ın kısıtlı olduğu bağımlılığı yeniden değerlendirmesine neden olmaz. Bu nedenle, bu yöntemi çağırmadan önce işlem bağlılığında tüm değişiklikler yapılmalıdır.
değiş tokuş etmek
İki nesnenin öğelerini değiştirir.
template<typename T, class _Ax>
inline void swap(
concurrent_vector<T, _Ax>& _A,
concurrent_vector<T, _Ax>& _B);
Parametreler
T
Eşzamanlı vektörlerde depolanan öğelerin veri türü.
_Ax
Eşzamanlı vektörlerin ayırıcı türü.
_A
Öğeleri eşzamanlı vektör ile değiştirilecek eşzamanlı vektör .
_B
Değiştirilecek öğeleri sağlayan eşzamanlı vektör veya öğeleri eşzamanlı vektör ile değiştirilecek vektör .
Açıklamalar
Şablon işlevi, kapsayıcı sınıfı üzerinde üye işlevini yürütmek için özelleştirilmiş bir algoritmadır. concurrent_vector::swap(). Bunlar, derleyici tarafından işlev şablonlarının kısmi sırasının örnekleridir. Şablon işlevleri, şablonun işlev çağrısıyla eşleşmesi benzersiz olmayacak şekilde aşırı yüklendiğinde, derleyici şablon işlevinin en özel sürümünü seçer. Algoritma sınıfında şablon işlevinin genel sürümü atamayla çalışır ve yavaş bir işlemdir. Kapsayıcı sınıfının iç gösterimiyle çalışaabildiği için her kapsayıcıdaki özel sürüm çok daha hızlıdır.
Bu yöntem eşzamanlılık açısından güvenli değildir. Bu yöntemi çağırdığınızda eş zamanlı vektörlerden herhangi birinde başka hiçbir iş parçacığının işlem gerçekleştirmediğinden emin olmanız gerekir.
exceptiondan_görev
template<typename _TaskType, typename _ExType>
task<_TaskType> task_from_exception(
_ExType _Exception,
const task_options& _TaskOptions = task_options());
Parametreler
_TaskType
_ExType
_İstisna
_TaskOptions
Dönüş Değeri
sonuçtan_görev
template<typename T>
task<T> task_from_result(
T _Param,
const task_options& _TaskOptions = task_options());
inline task<bool> task_from_result(ool _Param);
inline task<void> task_from_result(
const task_options& _TaskOptions = task_options());
Parametreler
T
_Param
_TaskOptions
Dönüş Değeri
Trace_agents_register_name
Verilen adı ETW izlemesindeki ileti bloğu veya aracıyla ilişkilendirir.
template <class T>
void Trace_agents_register_name(
_Inout_ T* _PObject,
_In_z_ const wchar_t* _Name);
Parametreler
T
Nesnenin türü. Bu genellikle bir ileti bloğu veya aracıdır.
_PObject
İzleme sırasında adı geçen ileti bloğuna veya aracıya ait bir işaretçi.
_Ad
Verilen nesnenin adı.
try_receive
Bağlamın tam olarak bir kaynaktan veri aramasına ve kabul edilen değerleri filtrelemesine olanak sağlayan genel bir deneme alma uygulaması. Veriler hazır değilse yöntemi döndürür .
template <class T>
bool try_receive(_Inout_ ISource<T>* _Src, T& _value);
template <class T>
bool try_receive(
_Inout_ ISource<T>* _Src,
T& _value,
typename ITarget<T>::filter_method const& _Filter_proc);
template <class T>
bool try_receive(ISource<T>& _Src, T& _value);
template <class T>
bool try_receive(
ISource<T>& _Src,
T& _value,
typename ITarget<T>::filter_method const& _Filter_proc);
Parametreler
T
Yük türü
_Src
Verilerin beklendiği kaynağa ilişkin bir işaretçi veya başvuru.
_değer
Sonucun yerleştirileceği konuma başvuru.
_Filter_proc
İletilerin kabul edilip edilmeyeceğini belirleyen bir filtre işlevi.
Dönüş Değeri
bir değer, bir yükün 'e yerleştirilip yerleştirilmediğini gösterir.
Açıklamalar
Daha fazla bilgi için bkz . İleti Geçirme İşlevleri.
bekle
Geçerli bağlamı belirtilen süre boyunca duraklatır.
void __cdecl wait(unsigned int _Milliseconds);
Parametreler
_Milisaniye
Mevcut bağlamın duraklatılması gereken milisaniye sayısı. parametresi değerine ayarlanırsa, devam etmeden önce geçerli bağlam diğer çalıştırılabilir bağlamlara yürütme vermelidir.
Açıklamalar
Bu yöntem Eşzamanlılık Çalışma Zamanı zamanlayıcı bağlamında çağrılırsa, zamanlayıcı temel alınan kaynakta çalıştırılacak farklı bir bağlam bulur. Zamanlayıcı doğası gereği işbirliğine bağlı olduğundan, bu bağlam belirtilen milisaniye sayısından sonra tam olarak sürdürülemez. Zamanlayıcı, zamanlayıcıya işbirliği yapmayan diğer görevleri yürütmekle meşgulse, bekleme süresi belirsiz olabilir.
when_all
Tüm argüman olarak verilen görevler başarıyla tamamlandığında başarıyla tamamlanacak bir görev oluşturur.
template <typename _Iterator>
auto when_all(
_Iterator _Begin,
_Iterator _End,
const task_options& _TaskOptions = task_options()) ->
decltype (details::_WhenAllImpl<typename std::iterator_traits<_Iterator>::value_type::result_type,
_Iterator>::_Perform(_TaskOptions, _Begin, _End));
Parametreler
_Iterator
Giriş yineleyicisinin türü.
_Başla
Sonuçta elde edilen görevde birleştirilecek öğe aralığındaki ilk öğenin konumu.
_Son
İlk öğenin, sonuçta elde edilen görevde birleştirilecek öğe aralığının ötesindeki konumu.
_TaskOptions
nesnesi.
Dönüş Değeri
Tüm giriş görevleri başarıyla tamamlandığında başarıyla tamamlanan bir görev. Giriş görevleri türündeyse , bu işlevin çıkışı bir olacaktır. Giriş görevleri türündeyse , çıkış görevi de olur .
Açıklamalar
engelleyici olmayan bir işlevdir ve sonucu olarak bir üretir. Görev::wait'den farklı olarak, ASTA (Uygulama STA) iş parçacığındaki bir UWP uygulamasında bu işlevi çağırmak güvenlidir.
Görevlerden biri iptal edilirse veya bir özel durum atarsa, döndürülen görev iptal edilmiş durumda erken tamamlanır ve bir özel durum oluşursa task::get veya çağırırsanız atılacak.
Daha fazla bilgi için bkz . Görev Paralelliği.
when_any
Bağımsız değişken olarak sağlanan görevlerden herhangi biri başarıyla tamamlandığında başarıyla tamamlanacak bir görev oluşturur.
template<typename _Iterator>
auto when_any(
_Iterator _Begin,
_Iterator _End,
const task_options& _TaskOptions = task_options())
-> decltype (
details::_WhenAnyImpl<
typename std::iterator_traits<_Iterator>::value_type::result_type,
_Iterator>::_Perform(_TaskOptions, _Begin, _End));
template<typename _Iterator>
auto when_any(
_Iterator _Begin,
_Iterator _End,
cancellation_token _CancellationToken)
-> decltype (
details::_WhenAnyImpl<
typename std::iterator_traits<_Iterator>::value_type::result_type,
_Iterator>::_Perform(_CancellationToken._GetImplValue(), _Begin, _End));
Parametreler
_Iterator
Giriş yineleyicisinin türü.
_Başla
Sonuçta elde edilen görevde birleştirilecek öğe aralığındaki ilk öğenin konumu.
_Son
İlk öğenin, sonuçta elde edilen görevde birleştirilecek öğe aralığının ötesindeki konumu.
_TaskOptions
_CancellationToken
Döndürülen görevin iptalini denetleyen iptal belirteci. İptal belirteci sağlamazsanız, sonuçta elde edilen görev, tamamlanmasına neden olan görevin iptal belirtecini alır.
Dönüş Değeri
Giriş görevlerinden herhangi biri başarıyla tamamlandığında başarıyla tamamlanan bir görev. Giriş görevleri türündeyse, bu işlevin çıktısı olur. Bu çiftin ilk elemanı tamamlanan görevin sonucunu, ikinci elemanı ise tamamlanan görevin dizinini belirtir. Giriş görevleri türündeyse ve çıkış bir ise, sonuç tamamlayan görevin dizinidir.
Açıklamalar
engelleyici olmayan bir işlevdir ve sonucu olarak bir üretir. Görev::wait'den farklı olarak, ASTA (Uygulama STA) iş parçacığındaki bir UWP uygulamasında bu işlevi çağırmak güvenlidir.
Daha fazla bilgi için bkz . Görev Paralelliği.
Ayrıca bkz.
Eşzamanlılık Ad Alanı