Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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_invoke och 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_map och 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
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. |