Dela via


Parallellkörning

Concurrency Runtime för C++ hjälper dig att skriva robusta, skalbara och dynamiska parallella program. Det höjer abstraktionsnivån så att du inte behöver hantera infrastrukturinformationen som är relaterad till samtidighet. Du kan också använda den för att ange schemaläggningsprinciper som uppfyller tjänsternas kvalitetskrav för dina program. Använd dessa resurser för att börja arbeta med Concurrency Runtime.

Referensdokumentation finns i Referens.

Tips/Råd

Concurrency Runtime är starkt beroende av C++11-funktioner och använder den modernare C++-stilen. Mer information finns i Välkommen tillbaka till C++.

Välja funktioner för samtidighetskörning

Artikel Beskrivning
Översikt Lär dig varför Concurrency Runtime är viktigt och beskriver dess viktigaste funktioner.
Jämföra med andra samtidighetsmodeller Visar hur Concurrency Runtime jämförs med andra samtidighetsmodeller, till exempel Windows-trådpoolen och OpenMP, så att du kan använda samtidighetsmodellen som bäst passar dina programkrav.
Migrera från OpenMP till Concurrency Runtime Jämför OpenMP med Concurrency Runtime och innehåller exempel på hur du migrerar befintlig OpenMP-kod för att använda Concurrency Runtime.
PPL (Parallel Patterns Library) Presenterar dig för PPL, som erbjuder parallella loopar, uppgifter och parallella containrar.
Asynkront agentbibliotek Introducerar hur du använder asynkrona agenter och meddelandeöverföring för att enkelt införliva dataflödes- och pipelining-uppgifter i dina program.
Aktivitetsschemaläggare Presentera dig för Aktivitetsschemaläggaren, vilket gör att du kan optimera prestandan för dina skrivbordsprogram som använder Concurrency Runtime.

Uppgiftsparallellitet i PPL

Artikel Beskrivning
Uppgiftsparallellitet

Gör så här: Använd parallel_invoke för att skriva en parallell sorteringsrutin

Gör så här: Använd parallel_invoke för att köra parallella åtgärder

Gör så här: Skapa en uppgift som slutförs efter en fördröjning
Beskriver uppgifter och aktivitetsgrupper som kan hjälpa dig att skriva asynkron kod och dela upp parallellt arbete i mindre delar.
Genomgång: Implementera futures Visar hur du kombinerar Concurrency Runtime-funktioner för att göra något mer.
Genomgång: Ta bort arbete från en User-Interface tråd Visar hur du flyttar det arbete som utförs av användargränssnittstråden i ett MFC-program till en arbetstråd.
Bästa praxis i Biblioteket för parallella mönster

Allmänna metodtips i Concurrency Runtime
Innehåller tips och metodtips för att arbeta med PPL.

Dataparallellitet i PPL

Artikel Beskrivning
Parallella algoritmer

Så här gör du: Skriva en parallel_for-loop

Gör så här: Skriva en parallel_for_each-loop

Så här gör du: utföra map- och reduce-operationer parallellt
Beskriver parallel_for, parallel_for_each, parallel_invokeoch andra parallella algoritmer. Använd parallella algoritmer för att lösa dataparallella problem som omfattar samlingar av data.
parallella containrar och objekt

Gör så här: Använda parallella containrar för att öka effektiviteten

Gör så här: Använd kombinerbart för att förbättra prestanda

Gör så här: Använd kombinerbart för att kombinera uppsättningar
Beskriver combinable klassen, samt concurrent_vector, concurrent_queue, concurrent_unordered_mapoch andra parallella containrar. Använd parallella containrar och objekt när du behöver containrar som ger trådsäker åtkomst till deras element.
Bästa praxis i Biblioteket för parallella mönster

Allmänna metodtips i Concurrency Runtime
Innehåller tips och metodtips för att arbeta med PPL.

Avbryta uppgifter och parallella algoritmer

Artikel Beskrivning
Annullering i PPL Beskriver rollen för annullering i PPL, inklusive hur du initierar och svarar på begäranden om annullering.
Anvisningar: Använda Annullering för att bryta från en parallell loop

Gör så här: Använd undantagshantering för att bryta från en parallell loop
Visar två sätt att avbryta dataparallellt arbete.

Universella Windows Platform-appar

Artikel Beskrivning
Skapa asynkrona åtgärder i C++ för UWP-appar Beskriver några av de viktigaste punkterna att tänka på när du använder Concurrency Runtime för att skapa asynkrona åtgärder i en UWP-app.
Genomgång: Ansluta med hjälp av arbetsuppgifter och XML HTTP-begäranden Visar hur du kombinerar PPL-uppgifter med gränssnitten IXMLHTTPRequest2 och IXMLHTTPRequest2Callback för att skicka HTTP GET- och POST-begäranden till en webbtjänst i en UWP-app.
Exempel på Windows Runtime-appar Innehåller nedladdningsbara kodexempel och demoappar för Windows Runtime.

Dataflödesprogrammering i biblioteket asynkrona agenter

Artikel Beskrivning
Asynkrona agenter

Asynkrona meddelandeblock

Funktioner för meddelandeöverföring

Anvisningar: Implementera olika Producer-Consumer mönster

Anvisningar: Tillhandahålla arbetsfunktioner till anrops- och transformeringsklasserna

Anvisningar: Använda transformator i en datapipeline

Anvisningar: Välj bland slutförda uppgifter

Anvisningar: Skicka ett meddelande med ett regelbundet intervall

Anvisningar: Använd ett filter för meddelandeblockering
Beskriver asynkrona agenter, meddelandeblock och funktioner för meddelandeöverföring, som är byggstenarna för att utföra dataflödesåtgärder i Concurrency Runtime.
Genomgång: Skapa ett Agent-Based-program

Genomgång: Skapa en dataflödesagent
Visar hur du skapar grundläggande agentbaserade program.
Genomgång: Skapa ett Image-Processing nätverk Visar hur du skapar ett nätverk med asynkrona meddelandeblock som utför bildbearbetning.
Genomgång: Använda join för att förhindra dödläge Använder problemet med matfilosofer för att illustrera hur du använder Concurrency Runtime för att förhindra dödläge i ditt program.
Genomgång: Skapa ett anpassat meddelandeblock Visar hur du skapar en typ av anpassat meddelandeblock som beställer inkommande meddelanden efter prioritet.
Metodtips i biblioteket för asynkrona agenter

Allmänna metodtips i Concurrency Runtime
Innehåller tips och metodtips för att arbeta med agenter.

Undantagshantering och felsökning

Artikel Beskrivning
undantagshantering Beskriver hur du arbetar med undantag i Concurrency Runtime.
Parallella diagnostikverktyg Lär dig hur du finjusterar dina program och använder Concurrency Runtime på bästa sätt.

Optimera prestanda

Artikel Beskrivning
Parallella diagnostikverktyg Lär dig hur du finjusterar dina program och använder Concurrency Runtime på bästa sätt.
Schemaläggare-tillfällen

Anvisningar: Hantera en schemaläggarinstans

Schemaläggarprinciper

Så här anger du specifika schemaläggningsprinciper

Anvisningar: Skapa agenter som använder specifika scheduler-principer
Visar hur du arbetar med att hantera schemaläggarinstanser och schemaläggningspolicys. För skrivbordsappar gör scheduler-principer att du kan associera specifika regler med specifika typer av arbetsbelastningar. Du kan till exempel skapa en scheduler-instans för att köra vissa uppgifter med en förhöjd trådprioritet och använda standardschemaläggaren för att köra andra uppgifter med normal trådprioritet.
Schemalägg grupper

Så här gör du: Använda schemagrupper för att påverka körordningen
Visar hur du använder schemagrupper för att mappa, eller gruppera, relaterade uppgifter tillsammans. Du kan till exempel kräva en hög grad av lokalitet bland relaterade uppgifter när dessa uppgifter drar nytta av att köras på samma processornod.
Enklare uppgifter Förklarar hur lätta uppgifter är användbara för att skapa uppgifter som inte kräver belastningsutjämning eller annullering, och hur de också är gynnsamma för att anpassa befintlig kod för användning med Concurrency Runtime.
Sammanhang

Gör så här: Använda kontextklassen för att implementera en kooperativ semafor

Gör så här: Använd överprenumeration för att förskjuta svarstid
Beskriver hur du styr beteendet för de trådar som hanteras av Concurrency Runtime.
Minneshanteringsfunktioner

Så här gör du: Använd Alloc och Free för att förbättra minnesprestanda
Beskriver minneshanteringsfunktionerna som concurrency Runtime tillhandahåller för att hjälpa dig att allokera och frigöra minne samtidigt.

Ytterligare resurser

Artikel Beskrivning
Asynkrona programmeringsmönster och tips i Hilo (Windows Store-appar med C++ och XAML) Lär dig hur vi använde Concurrency Runtime för att implementera asynkrona åtgärder i Hilo, en Windows Runtime-app med C++ och XAML.
Blogg om parallell programmering i inbyggd kod Innehåller ytterligare djupgående bloggartiklar om parallell programmering i Concurrency Runtime.
Parallell databehandling i C++ och native code-forum Gör att du kan delta i communitydiskussioner om Concurrency Runtime.
Parallell programmering Lär dig mer om den parallella programmeringsmodell som är tillgänglig i .NET Framework.

Se även

Referens