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.
Avsnitten i den här delen av dokumentationen beskriver de viktiga funktionerna i Concurrency Runtime Task Scheduler. Schemaläggaren är användbar när du vill finjustera prestanda för din befintliga kod som använder Concurrency Runtime.
Viktigt!
Schemaläggaren är inte tillgänglig från en UWP-app (Universal Windows Platform). Mer information finns i Skapa asynkrona åtgärder i C++ för UWP-appar.
I Visual Studio 2015 och senare använder concurrency::task-klassen och relaterade typer i ppltasks.h Windows-threadPool som sin schemaläggare. Det här avsnittet gäller inte längre för typer som definieras i ppltasks.h. Parallella algoritmer som parallel_for fortsätta att använda Concurrency Runtime som standardschemaläggare.
Tips/Råd
Concurrency Runtime tillhandahåller en standardschemaläggare och därför behöver du inte skapa en i ditt program. Eftersom Schemaläggaren hjälper dig att finjustera prestanda för dina program rekommenderar vi att du börjar med PPL (Parallel Patterns Library) eller Asynchronous Agents Library om du är nybörjare på Concurrency Runtime.
Uppgiftsschemaläggaren schemalägger och samordnar uppgifter när de körs. En uppgift är en arbetsenhet som utför ett visst jobb. En uppgift kan vanligtvis köras parallellt med andra aktiviteter. Det arbete som utförs av aktivitetsgruppobjekt, parallella algoritmer och asynkrona agenter är alla exempel på uppgifter.
Schemaläggaren hanterar information som rör effektiv schemaläggning av uppgifter på datorer som har flera beräkningsresurser. Schemaläggaren använder också de senaste funktionerna i det underliggande operativsystemet. Därför skalar och förbättrar program som använder Concurrency Runtime automatiskt maskinvara som har utökade funktioner.
Om du jämför med andra samtidighetsmodeller beskrivs skillnaderna mellan förebyggande och samarbetsinriktade schemaläggningsmekanismer. Schemaläggaren använder kooperativ schemaläggning och en arbetsstjälande algoritm tillsammans med operativsystemets preemptiva schemaläggare för att uppnå maximal användning av processresurser.
Concurrency Runtime tillhandahåller en standardschemaläggare så att du inte behöver hantera infrastrukturinformation. Därför använder du vanligtvis inte schemaläggaren direkt. Men för att uppfylla programmets kvalitetsbehov kan du använda schemaläggaren för att tillhandahålla en egen schemaläggningsprincip eller associera schemaläggare med specifika uppgifter. Anta till exempel att du har en parallell sorteringsrutin som inte skalas utöver fyra processorer. Du kan använda scheduler-principer för att skapa en schemaläggare som genererar högst fyra samtidiga uppgifter. Om du kör sorteringsrutinen i den här schemaläggaren kan andra aktiva schemaläggare använda återstående bearbetningsresurser.
Relaterade ämnen
| Titel | Beskrivning |
|---|---|
| Schemaläggare-tillfällen | Beskriver scheduler-instanser och hur klasserna concurrency::Scheduler och concurrency::CurrentScheduler används för att hantera dem. Använd scheduler-instanser när du vill associera explicita schemaläggningsprinciper med specifika typer av arbetsbelastningar. |
| Schemaläggarprinciper | Beskriver rollen för schemaläggningsprinciper. Använd scheduler-principer när du vill styra den strategi som schemaläggaren använder när den hanterar uppgifter. |
| Schemalägg grupper | Beskriver rollen för schemagrupper. Använd schemagrupper när du behöver en hög grad av lokalitet bland aktiviteter, till exempel när en grupp relaterade uppgifter drar nytta av att köras på samma processornod. |
| Enklare uppgifter | Beskriver rollen av lättviktiga uppgifter. Enklare uppgifter är användbara när du anpassar befintlig kod för att använda schemaläggningsfunktionerna i Concurrency Runtime. |
| Sammanhang | Beskriver rollen för kontexter, concurrency::wait funktionen och concurrency::Context klassen. Använd den här funktionen när du behöver kontroll över när kontexter blockerar, avblockerar och ger, eller när du vill aktivera överprenumerering i ditt program. |
| Minneshanteringsfunktioner | Beskriver funktionerna concurrency::Alloc och concurrency::Free. Dessa funktioner kan förbättra minnesprestanda genom att allokera och frigöra minne samtidigt. |
| Jämföra med andra samtidighetsmodeller | Beskriver skillnaderna mellan förebyggande och samarbetsinriktade schemaläggningsmekanismer. |
| PPL (Parallel Patterns Library) | Beskriver hur du använder olika parallella mönster, till exempel parallella algoritmer, i dina program. |
| Asynkront agentbibliotek | Beskriver hur du använder asynkrona agenter i dina program. |
| Samtidighetskörning | Beskriver Concurrency Runtime, som förenklar parallell programmering och innehåller länkar till relaterade ämnen. |