Aracılığıyla paylaş


eşzamanlılık ad alanı işlevleri

Ayırma

Eşzamanlılık Çalışma Zamanı Önbelleğe Alma Alt Bulucu'dan belirtilen boyutta bir bellek bloğu ayırır.

void* __cdecl Alloc(size_t _NumBytes);

Parametreler

_NumBytes
Ayrılacak bellek bayt sayısı.

İade 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

Verileri hedef bloğa yaymak için bir görev zamanlayan zaman uyumsuz gönderme işlemi.

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 başvuru.

İade Değeri

true yöntemi döndürülmeden önce ileti kabul edildiyse, false aksi takdirde.

Açıklamalar

Daha fazla bilgi için bkz . İleti Geçirme İşlevleri.

cancel_current_task

Şu anda yürütülen görevi iptal eder. Bu işlev, görevin yürütülmesini durdurmak ve duruma girmesine canceled neden olmak için görevin gövdesinden çağrılabilir.

gövdesinde değilseniz bu işlevi çağırmak desteklenen bir tasksenaryo değildir. 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();

Temizleyin

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 nesnesini temel alan Windows Çalışma Zamanı zaman uyumsuz bir yapı oluşturur. dönüş türü create_asyncIAsyncAction^, , IAsyncActionWithProgress<TProgress>^, IAsyncOperation<TResult>^veya IAsyncOperationWithProgress<TResult, TProgress>^ yöntemine geçirilen lambda imzasını temel alır.

template<typename _Function>
__declspec(noinline) auto create_async(const _Function& _Func)
    -> decltype(ref new details::_AsyncTaskGeneratorThunk<_Function>(_Func));

Parametreler

_Işlev
Tür.

_Func
Windows Çalışma Zamanı zaman uyumsuz yapı oluşturulacak lambda veya işlev nesnesi.

İade Değeri

IAsyncAction^, IAsyncActionWithProgress TProgress<>^, IAsyncOperation<TResult>^ veya IAsyncOperationWithProgress<TResult, TProgress>^ ile temsil edilen zaman uyumsuz bir yapı. 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 TResult sonucunu döndüren lambdalar, TResult işlemlerinin oluşturulmasına neden olur.

Lambda, kendi içinde aysnchronous çalışmasını kapsülleyen veya zaman uyumsuz çalışmayı temsil eden bir görev zincirinin devamı olan bir de döndürebilir task<TResult> . Bu durumda, görevler zaman uyumsuz olarak yürütülen görevler olduğundan ve lambda'nın dönüş türü tarafından create_asyncdöndürülen zaman uyumsuz yapıyı üretmek için eşlenmemiş olduğundan lambda satır içinde yürütülür. Bu, boş görev<> döndüren bir lambdanın eylemlerin oluşturulmasına neden olacağı ve TResult görevini<döndüren bir lambda'nın TResult> işlemlerinin oluşturulmasına neden olacağı anlamına gelir.

Lambda sıfır, bir veya iki bağımsız değişken alabilir. Her ikisi progress_reporter<TProgress> de kullanılıyorsa geçerli bağımsız değişkenler ve cancellation_tokenşeklindedir. 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 TProgress> alan bir lambda, progress_reporter<nesnesinin yöntemi her report çağrıldığında TProgress türünün ilerleme durumunu bildiren zaman uyumsuz bir yapı döndürmeye neden create_async olur. cancellation_token alan bir lambda, iptali denetlemek için bu belirteci kullanabilir veya zaman uyumsuz yapı iptalinin bu görevlerin iptaline neden olması için oluşturduğu görevlere geçirebilir.

Lambda veya işlev nesnesinin gövdesi bir sonuç döndürürse (TResult> görevi<değil) lamdba, Çalışma Zamanı'nın örtük olarak oluşturduğu bir görev bağlamında işlem MTA'sı içinde zaman uyumsuz olarak yürütülür. IAsyncInfo::Cancel yöntemi örtük görevin iptalini neden olur.

Lambda gövdesi bir görev döndürürse, lamba satır içinde yürütülür ve lambda'yı türünde cancellation_token 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. Zaman uyumsuz işlemi veya üretilen eylemi çağırdığınızda Çalışma Zamanı'nın bir geri çağırma çağırmasına neden olmak için belirtecin üzerindeki yöntemini de kullanabilirsiniz register_callbackIAsyncInfo::Cancel ..

Bu işlev yalnızca Windows Çalışma Zamanı uygulamalarda kullanılabilir.

CreateResourceManager

Eşzamanlılık Çalışma Zamanı'nın Resource Manager'ının tekil örneğini temsil eden bir arabirim döndürür. Resource Manager, birbirleriyle işbirliği yapmak isteyen zamanlayıcılara kaynak atamakla sorumludur.

IResourceManager* __cdecl CreateResourceManager();

İade Değeri

Bir IResourceManager arabirim.

Açıklamalar

Bu yönteme yapılan birden çok sonraki çağrı, Resource Manager'ın aynı örneğini döndürür. Yöntemine yapılan her çağrı Resource Manager'da bir başvuru sayısını artırır ve zamanlayıcınız Resource Manager ile iletişimini tamamladığında IResourceManager::Release yöntemine yapılan bir çağrıyla eşleştirilmelidir.

İşletim sistemi Eşzamanlılık Çalışma Zamanı tarafından desteklenmiyorsa unsupported_os oluşturulur.

create_task

PPL görev nesnesi oluşturur. create_task bir görev oluşturucu kullanmış olabileceğiniz her yerde kullanılabilir. Görev oluştururken anahtar sözcüğün kullanılmasına izin verdiğinden auto , çoğunlukla kolaylık sağlamak için sağlanır.

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. UWP uygulamanızda görevler kullanıyorsanız bu bir lambda veya işlev nesnesi task_completion_event , nesne, farklı task bir nesne veya Windows::Foundation::IAsyncInfo arabirimi olabilir.

_TaskOptions
Görev seçenekleri.

_Görev
Oluşturulacak görev.

İade Değeri

türünde T, türünden _Paramçıkarılır 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ı task bir nesne geçirmenize izin verilmez.

Döndürülen görevin türü, ilk parametreden işleve çıkarılır. task_completion_event<T>türü veya döndüren Ttask<T>bir , task<T>veya bir functor ise_Param, oluşturulan görevin türü olurtask<T>.

UWP uygulamasında, Windows::Foundation::IAsyncOperation<T>^ veya Windows::Foundation::IAsyncOperationWithProgress<T,P>^ türündeyse _Param veya bu türlerden birini döndüren bir functor ise, oluşturulan görev türünde task<T>olur. Windows::Foundation::IAsyncAction^ veya Windows::Foundation::IAsyncActionWithProgress<P>^ türündeyse _Param veya bu türlerden birini döndüren bir functor ise, oluşturulan görevin türü task<void>olur.

DisableTracing

Eşzamanlılık Çalışma Zamanı'nda izlemeyi devre dışı bırakır. ETW izlemesi varsayılan olarak kaydı kaldırıldığından bu işlev kullanım dışıdır.

__declspec(deprecated("Concurrency::DisableTracing is a deprecated function.")) _CRTIMP HRESULT __cdecl DisableTracing();

İade Değeri

İzleme doğru şekilde devre dışı bırakıldıysa, S_OK döndürülür. İzleme daha önce başlatılmadıysa döndürülür E_NOT_STARTED

EnableTracing

Eşzamanlılık Çalışma Zamanı'nda izlemeyi 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();

İade Değeri

İzleme doğru başlatıldıysa döndürülür S_OK ; aksi takdirde E_NOT_STARTED döndürülür.

Ücretsiz

Yöntemi tarafından Alloc önceden ayrılmış bir bellek bloğunu Eşzamanlılık Çalışma Zamanı Önbelleğe Alma Alt Bulucu'ya serbest bırakır.

void __cdecl Free(_Pre_maybenull_ _Post_invalid_ void* _PAllocation);

Parametreler

_PAllocation
Daha önce yöntemi tarafından Alloc ayrılan ve serbestlenecek belleğe bir işaretçi. parametresi _PAllocation değerine NULLayarlanı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();

İade Değeri

GetExecutionContextId

Arabirimi uygulayan IExecutionContext bir yürütme bağlamı için atanabilen benzersiz bir tanımlayıcı döndürür.

unsigned int __cdecl GetExecutionContextId();

İade Değeri

Yürütme bağlamı için benzersiz tanımlayıcı.

Açıklamalar

Resource Manager tarafından sunulan yöntemlerden herhangi birine parametre olarak bir IExecutionContext arabirim 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();

İade Değeri

İşletim sistemini temsil eden numaralandırılmış değer.

Açıklamalar

İşletim sistemi Eşzamanlılık Çalışma Zamanı tarafından desteklenmiyorsa unsupported_os oluşturulur.

GetProcessorCount

Temel alınan sistemdeki donanım iş parçacığı sayısını döndürür.

unsigned int __cdecl GetProcessorCount();

İade Değeri

Donanım iş parçacığı sayısı.

Açıklamalar

İşletim sistemi Eşzamanlılık Çalışma Zamanı tarafından desteklenmiyorsa unsupported_os oluşturulur.

GetProcessorNodeCount

Temel alınan sistemdeki NUMA düğümlerinin veya işlemci paketlerinin sayısını döndürür.

unsigned int __cdecl GetProcessorNodeCount();

İade 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.

İşletim sistemi Eşzamanlılık Çalışma Zamanı tarafından desteklenmiyorsa unsupported_os oluşturulur.

GetSchedulerId

Arabirimi uygulayan IScheduler bir zamanlayıcıya atanabilen benzersiz bir tanımlayıcı döndürür.

unsigned int __cdecl GetSchedulerId();

İade Değeri

Zamanlayıcı için benzersiz tanımlayıcı.

Açıklamalar

Resource Manager tarafından sunulan yöntemlerden herhangi birine parametre olarak bir IScheduler arabirim geçirmeden önce zamanlayıcınızın tanımlayıcısını almak için bu yöntemi kullanın.

internal_assign_iterators

template<typename T, class _Ax>
template<class _I>
void concurrent_vector<T, _Ax>::internal_assign_iterators(
   _I first,
   _I last);

Parametreler

T

_Ax

_I

Ilk

Son

interruption_point

İptal için bir kesinti noktası oluşturur. Bu işlevin çağrıldığı bağlamda bir iptal işlemi devam ederse, bu işlem şu anda yürütülen paralel çalışmanın yürütülmesini durduran bir iç özel durum oluşturur. İptal işlemi devam etmiyorsa işlev hiçbir şey yapmaz.

inline void interruption_point();

Açıklamalar

İşlev tarafından interruption_point() oluşan iç iptal özel durumunu yakalamamalısınız. Özel durum çalışma zamanı tarafından yakalanıp işlenir ve yakalanması programınızın anormal davranmasına neden olabilir.

is_current_task_group_canceling

Geçerli bağlamda satır içi olarak yürütülmekte olan görev grubunun etkin bir iptalin ortasında olup olmadığını (veya kısa süre içinde olacağını) belirten bir gösterge döndürür. Geçerli bağlamda şu anda satır içinde yürütülen bir görev grubu yoksa, false döndürüleceğini unutmayın.

bool __cdecl is_current_task_group_canceling();

İade Değeri

true şu anda yürütülmekte olan görev grubu iptal ediyorsa, false aksi takdirde.

Açıklamalar

Daha fazla bilgi için bkz . İptal.

make_choice

choice İsteğe bağlı Scheduler veya iki veya ScheduleGroup 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
Scheduler İleti bloğu için yayma görevinin choice zamanlandığı nesne.

_Item1
İlk kaynak.

_Item2
İkinci kaynak.

_Bileşen
Ek kaynaklar.

_PScheduleGroup
ScheduleGroup İleti bloğu için yayma görevinin choice zamanlandığı nesne. Scheduler Kullanılan nesne zamanlama grubu tarafından örtülür.

İade Değeri

choice İki veya daha fazla giriş kaynağı içeren bir ileti bloğu.

make_greedy_join

greedy multitype_join İsteğe bağlı Scheduler veya iki veya ScheduleGroup 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
Scheduler İleti bloğu için yayma görevinin multitype_join zamanlandığı nesne.

_Item1
İlk kaynak.

_Item2
İkinci kaynak.

_Bileşen
Ek kaynaklar.

_PScheduleGroup
ScheduleGroup İleti bloğu için yayma görevinin multitype_join zamanlandığı nesne. Scheduler Kullanılan nesne zamanlama grubu tarafından örtülür.

İade Değeri

greedy multitype_join İki veya daha fazla giriş kaynağı içeren bir ileti bloğu.

make_join

non_greedy multitype_join İsteğe bağlı Scheduler veya iki veya ScheduleGroup 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
Scheduler İleti bloğu için yayma görevinin multitype_join zamanlandığı nesne.

_Item1
İlk kaynak.

_Item2
İkinci kaynak.

_Bileşen
Ek kaynaklar.

_PScheduleGroup
ScheduleGroup İleti bloğu için yayma görevinin multitype_join zamanlandığı nesne. Scheduler Kullanılan nesne zamanlama grubu tarafından örtülür.

İade Değeri

non_greedy multitype_join İki veya daha fazla giriş kaynağı içeren bir ileti bloğu.

make_task

Nesne oluşturmak için bir task_handle fabrika yöntemi.

template <class _Function>
task_handle<_Function> make_task(const _Function& _Func);

Parametreler

_Işlev
Nesne tarafından temsil edilen çalışmayı yürütmek için çağrılacak işlev nesnesinin task_handle türü.

_Func
Nesnesi tarafından task_handle temsil edilen çalışmayı yürütmek için çağrılacak işlev. Bu bir lambda functor, bir işlev işaretçisi veya işlev çağrısı işlecinin imzalı void operator()()bir sürümünü destekleyen herhangi bir nesne olabilir.

İade Değeri

Bir task_handle nesnesi.

Açıklamalar

Lambda ifadesine sahip bir task_handle 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ı O(n) dışında karşılaştırma tabanlı, kararsız, yerinde sıralamaya benzer std::sort 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ü.

_Işlev
İkili karşılaştırıcının türü.

_Başlamak
Sıralanacak aralıktaki ilk öğenin konumunu ele alan rastgele erişim yineleyicisi.

_Son -unda
Sıralanacak aralıktaki son öğeyi geçen konumu ele alan rastgele erişim yineleyicisi.

_Ayırma
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 koşul iki bağımsız değişken alır ve tatmin olduğunda ve false karşılanmadığında döndürürtrue. Bu karşılaştırıcı işlevi, dizideki öğe çiftlerine katı bir zayıf sıralama uygulamalıdır.

_Chunk_size
Paralel yürütme için ikiye bölünecek bir öbek mimimum boyutu.

Açıklamalar

Tüm aşırı yüklemeler, sıralanacak öğe sayısı ve T öğe türü olan n ek alan gerektirirn * sizeof(T). Çoğu durumda parallel_buffered_sort parallel_sort performansta bir gelişme gösterir ve kullanılabilir belleğiniz varsa parallel_sort üzerinden kullanmanız gerekir.

Sağlamazsanız, öğesinin işlecini operator<()sağlaması için öğe türünü gerektiren varsayılan olarak bir ikili karşılaştırıcı std::less kullanılır.

Ayırıcı türü veya örneği sağlamazsanız, arabelleği ayırmak için C++ Standart Kitaplık bellek ayırıcısı std::allocator<T> 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 _Chunk_size , algoritmaya boyut <_Chunk_size öbeklerini seri olarak işlemesi gerektiğini belirtmek için kullanılabilir.

parallel_for

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

_Index_type
Yineleme için kullanılan dizinin türü.

_Işlev
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ü.

Ilk
Yinelemeye dahil edilecek ilk dizin.

Son
Yinelemeye dahil edilecek son dizini geçen dizin.

_Adım
ile firstlastyinelenirken adım adım atılan değer. Adım pozitif olmalıdır. adım 1'den küçükse invalid_argument oluşturulur.

_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ı void operator()(_Index_type)bir sürümünü destekleyen herhangi bir nesne olabilir.

_Bölüm
Bölümleyici nesnesine başvuru. Bağımsız değişken constauto_partitioner, static_partitioner&,constconst simple_partitioner&& veya affinity_partitioner& olabilir affinity_partitioner bir nesne kullanılırsa, algoritmanın gelecekteki döngülerin durumunu yeniden kullanabilmesi için başvuru sabit olmayan bir l-değer başvurusu olmalıdır.

Açıklamalar

Daha fazla bilgi için bkz . Paralel Algoritmalar.

parallel_for_each

parallel_for_each bir aralıktaki her öğeye paralel olarak belirtilen bir işlevi uygular. Öğeler üzerinde yinelemenin for_each paralel olarak gerçekleştirilmesi ve yineleme sırasının belirtilmemiş olması dışında ad alanındaki işleve std benzer. bağımsız değişkeni_Func, parametrenin T yinelenen kapsayıcının öğe türü olduğu formun operator()(T) 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

_Yineleyici
Kapsayıcı üzerinde yinelemek için kullanılan yineleyicinin türü.

_Işlev
Aralıktaki her öğeye uygulanacak işlevin türü.

_Partitioner
Ilk
Paralel yinelemeye dahil edilecek ilk öğenin konumunu ele alan bir yineleyici.

Son
Paralel yinelemeye dahil edilecek son öğeyi geçen konumu ele alan bir yineleyici.

_Func
Aralıktaki her öğeye uygulanan kullanıcı tanımlı işlev nesnesi.

_Bölüm
Bölümleyici nesnesine başvuru. Bağımsız değişken constauto_partitioner, static_partitioner&,constconst simple_partitioner&& veya affinity_partitioner& olabilir affinity_partitioner bir nesne kullanılırsa, algoritmanın gelecekteki döngülerin durumunu yeniden kullanabilmesi için başvuru sabit olmayan bir l-değer başvurusu olmalıdır.

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ı void operator()()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ı kendi seçimi için böyle bir özel durum seçer ve çağrısının parallel_invokedışına yayılır.

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ü.

_Işlev
Projeksiyon işlevinin türü.

_Başlamak
Sıralanacak aralıktaki ilk öğenin konumunu ele alan rastgele erişim yineleyicisi.

_Son -unda
Sıralanacak aralıktaki son öğeyi geçen konumu ele alan rastgele erişim yineleyicisi.

_Ayırma
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
Paralel yürütme için ikiye bölünecek bir öbek mimimum boyutu.

Açıklamalar

Tüm aşırı yüklemeler, sıralanacak öğe sayısı ve T öğe türü olan n ek alan gerektirirn * sizeof(T). Bir öğe verildiğinde bir anahtar döndürmek için imzalı I _Proj_func(T) bir projeksiyon funktörü gereklidir; burada T öğe türüdür ve I 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.

Ayırıcı türü veya örneği sağlamazsanız, arabelleği ayırmak için C++ Standart Kitaplık bellek ayırıcısı std::allocator<T> 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 _Chunk_size , algoritmaya boyut <_Chunk_size ö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. parallel_reduce , ikili işlemin ilişkilendirilebilir olmasını gerektirmesi ve ilk değer yerine kimlik değeri gerektirmesi dışında, ile benzerdir std::accumulate.

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, imzalı _Reduce_type _Sym_fun(_Reduce_type, _Reduce_type)bir işlev türü olmalıdır ve burada _Reduce_type kimlik türüyle ve azaltmanın sonuç türüyle aynıdır. Üçüncü aşırı yükleme için bu, çıkış türüyle _Range_reduce_funtutarlı olmalıdır.

_Reduce_type
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 olur.

_Range_reduce_fun
Aralık azaltma işlevinin türü. Bu, imzası _Reduce_type _Range_fun(_Forward_iterator, _Forward_iterator, _Reduce_type)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şlamak
Azaltılacak aralıktaki ilk öğeyi ele alan bir giriş yineleyicisi.

_Son -unda
Azaltılacak aralıktaki son öğenin ötesindeki bir konum olan öğeyi ele alan bir giriş yineleyicisi.

_Kimlik
Kimlik değeri _Identity , azaltmanın sonuç türüyle ve ayrıca value_type 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ı value_type olabilir. Uygun bir değere sahip olmalıdır; aralık azaltma işleci _Range_fun, tek bir öğe türüne value_type ve kimlik değerine uygulandığında, değerin türünden value_type 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.

İade 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 value_type, Tdeğ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 T T::operator + (T) sağlamalıdır. İkinci aşamada da aynı işleç kullanılır.

İkinci aşırı yükleme, yineleyicinin value_type kimlik değeri türüyle ve azaltma sonuç türüyle aynı olmasını da gerektirir. Sağlanan ikili işleç _Sym_fun , 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 value_type türü her ikisinden de farklı olabilir. Aralık azaltma işlevi _Range_fun ilk aşamada kimlik değeri ilk değer olarak kullanılır ve ikili işlevi _Sym_reduce_fun 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 std::sort işlev, karşılaştırma tabanlı, kararsız ve yerinde sıralama özelliğine benzer.

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ü.

_Işlev
İkili karşılaştırma funktörünün türü.

_Başlamak
Sıralanacak aralıktaki ilk öğenin konumunu ele alan rastgele erişim yineleyicisi.

_Son -unda
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 koşul iki bağımsız değişken alır ve tatmin olduğunda ve false karşılanmadığında döndürürtrue. Bu karşılaştırıcı işlevi, dizideki öğe çiftlerine katı bir zayıf sıralama uygulamalıdır.

_Chunk_size
Paralel yürütme için ikiye bölünecek bir öbek en küçük boyutu.

Açıklamalar

İlk aşırı yükleme ikili karşılaştırıcısını std::lesskullanır.

İkinci aşırı yüklenen, giriş aralığındaki öğelerin türü olan T imzaya bool _Func(T, T) sahip olması gereken sağlanan ikili karşılaştırıcıyı kullanı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 _Chunk_size , algoritmaya boyut <_Chunk_size öbeklerini seri olarak işlemesi gerektiğini belirtmek için kullanılabilir.

parallel_transform

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 eşanlamlı olarak eşdeğerdir std::transform.

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 birli functor 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
Çalıştırılacak ilk veya tek kaynak aralığındaki son öğeyi geçen konumu ele alan 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.

_Bölüm
Bölümleyici nesnesine başvuru. Bağımsız değişken constauto_partitioner, static_partitioner&,constconst simple_partitioner&& veya affinity_partitioner& olabilir affinity_partitioner bir nesne kullanılırsa, algoritmanın gelecekteki döngülerin durumunu yeniden kullanabilmesi için başvuru sabit olmayan bir l-değer başvurusu olmalıdır.

ilk2
ç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.

İade Değeri

İşlev nesnesi tarafından dönüştürülen çıkış öğelerini alan hedef aralıktaki son öğeyi geçen konumu ele alan bir çıkış yineleyicisi.

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.

Bağımsız değişkenini _Unary_op alan aşırı yüklemeler, giriş aralığındaki her öğeye birli functor uygulayarak giriş aralığını çıkış aralığına dönüştürür. _Unary_op, yinelenen aralığın değer türü olan T imzalı operator()(T) işlev çağrısı işlecini desteklemelidir.

Bağımsız değişkenini _Binary_op alan aşırı yüklemeler, ikili funktörünü ilk giriş aralığından bir öğeye ve ikinci giriş aralığından bir öğeye uygulayarak iki giriş aralığını çıkış aralığına dönüştürür. _Binary_op, iki giriş yineleyicisinin değer türleri olan TU imzalı operator()(T, U) 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ı
Milisaniye cinsinden veriler için yöntemin olması gereken en uzun süre.

_Filter_proc
İletilerin kabul edilip edilmeyeceğini belirleyen bir filtre işlevi.

İade Değeri

Kaynaktan, yük türündeki bir değer.

Açıklamalar

parametresi _Timeout sabiti COOPERATIVE_TIMEOUT_INFINITEdışı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, daha verimli olduğundan ve zaman aşımlarında özel durumlar oluşturmadığından zaman aşımı 0 (sıfır) ile çağırmak receive yerine try_receive işlevini kullanmanız gerekir.

Daha fazla bilgi için bkz . İleti Geçirme İşlevleri.

run_with_cancellation_token

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

_Işlev
Ç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. İşlevin, üst görev grubundan örtük iptal işleminin iptal edilme olasılığı olmadan yürütülmesini istiyorsanız kullanın cancellation_token::none() .

Açıklamalar

iptal edildiğinde cancellation_token işlev nesnesindeki tüm kesinti noktaları tetiklenir. Üst belirtecin farklı bir belirteci varsa veya belirteci _Ct yoksa, açık belirteç bunu _Func üst iptalden 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 başvuru.

İade Değeri

true ileti kabul edildiyse, false 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ı.

set_task_execution_resources

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. Resource Manager çağrılırken mevcut olmadığı sürece birden çok kez çağrılabilir. Benzite sınırı ayarlandıktan sonra, yönteme bir sonraki geçerli çağrıya set_task_execution_resources kadar etkin kalır.

Sağlanan benzite maskesinin işlem benzdirme maskesinin bir alt kümesi olması gerekmez. Gerekirse işlem benzitesi 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.

count
parametresi _PGroupAffinitytarafından belirtilen dizideki girdilerin GROUP_AFFINITY sayısı.

_PGroupAffinity
Girdi dizisi GROUP_AFFINITY .

Açıklamalar

Bir Resource Manager çağrıldığında mevcutsa yöntemi bir invalid_operation özel durumu ve belirtilen benşim boş bir kaynak kümesiyle sonuçlanırsa bir invalid_argument özel durumu oluşturur.

Parametre olarak grup benzimleri dizisini alan yöntemin sürümü yalnızca Windows 7 veya üzeri sürüme sahip 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 benzini program aracılığıyla değiştirmek, Resource Manager'ın kısıtlandığı benşimi yeniden değerlendirmesine neden olmaz. Bu nedenle, bu yöntemi çağırmadan önce işlem benziniminde tüm değişiklikler yapılmalıdır.

swap

İki concurrent_vector 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.

_B
Değiştirilecek öğeleri sağlayan eşzamanlı vektör veya öğeleri eşzamanlı vektör ile değiştirilecek vektör _A.

Açıklamalar

Şablon işlevi, üye işlevini _Ayürütmek için kapsayıcı sınıfında concurrent_vector özelleştirilmiş bir algoritmadır. concurrent_vector::swap( _B). 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 template <class T> void swap(T&, T&)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.

task_from_exception

template<typename _TaskType, typename _ExType>
task<_TaskType> task_from_exception(
    _ExType _Exception,
    const task_options& _TaskOptions = task_options());

Parametreler

_Tasktype

_ExType

_Özel durum

_TaskOptions

İade Değeri

task_from_result

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

İade 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
İzlemede adı geçen ileti bloğuna veya aracıya 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 false.

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.

İade Değeri

bir bool yükün içine _valueyerleştirilip yerleştirilmediğini gösteren bir değer.

Açıklamalar

Daha fazla bilgi için bkz . İleti Geçirme İşlevleri.

wait

Geçerli bağlamı belirtilen süre boyunca duraklatır.

void __cdecl wait(unsigned int _Milliseconds);

Parametreler

_Milisaniye
Geçerli bağlamın duraklatılması gereken milisaniye sayısı. _Milliseconds parametresi değerine 0ayarlanı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ğiyle verim vermeyen diğer görevleri yürütmekle meşgulse, bekleme süresi belirsiz olabilir.

when_all

Bağımsız değişken olarak sağlanan tüm 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

_Yineleyici
Giriş yineleyicisinin türü.

_Başlamak
Sonuçta elde edilen görevde birleştirilecek öğe aralığındaki ilk öğenin konumu.

_Son -unda
İlk öğenin, sonuçta elde edilen görevde birleştirilecek öğe aralığının ötesindeki konumu.

_TaskOptions
task_options nesnesi.

İade 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 T, bu işlevin çıkışı bir task<std::vector<T>>olacaktır. Giriş görevleri türündeyse void , çıkış görevi de olur task<void>.

Açıklamalar

when_all , sonucu olarak bir oluşturan engelleyici olmayan bir task işlevdir. 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 oluşturursa, döndürülen görev iptal edildi durumunda erken tamamlanır ve görev::get veya task::wait bu göreve çağrı yaparsanız özel durum oluşursa oluşturulur.

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

_Yineleyici
Giriş yineleyicisinin türü.

_Başlamak
Sonuçta elde edilen görevde birleştirilecek öğe aralığındaki ilk öğenin konumu.

_Son -unda
İ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.

İade 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 T, bu işlevin çıkışı, çiftin ilk öğesinin tamamlayan görevin sonucu olduğu, ikinci öğenin ise tamamlanan görevin dizini olduğu bir task<std::pair<T, size_t>>>olur. Giriş görevleri türündeyse void çıkış bir task<size_t>ise, sonuç tamamlayan görevin dizinidir.

Açıklamalar

when_any , sonucu olarak bir oluşturan engelleyici olmayan bir task işlevdir. 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ı