Sdílet prostřednictvím


Porovnání modelu Concurrency Runtime s jinými modely souběžného zpracování

Tento dokument popisuje rozdíly mezi modely programování souběžnosti Runtime a dalších technologií a funkcí.Porozumění, jak porovnat výhody Runtime souběžnosti na dávky jiné modely programování, můžete vybrat technologii, která nejlépe splňuje požadavky aplikací.

Pokud aktuálně používáte jiné programovací model Windows fondu podprocesů nebo OpenMP, existují situace, kde může být vhodné přenést runtime souběžnosti.Například v tématu Migrace z OpenMP do Concurrency Runtime popisuje, kdy může být vhodné přenést z OpenMP runtime souběžnosti.Však pokud jste spokojeni s výkon aplikací a podporu pro aktuální ladění, migrace není nutné.

Můžete použít funkce a výhody produktivity souběžnosti runtime doplnit stávající aplikace, která používá jiný model souběžnosti.Souběžnost Runtime nemůže zaručit Vyrovnávání zatížení při více plánovače úloh soutěží o stejné výpočetních prostředků.Pokud však pracovní vytížení nepřekrývají, tento efekt je minimální.

Oddíly

  • Porovnání preemptivní plánování, plánování spolupráce

  • Porovnání souběžnosti Runtime rozhraní API systému Windows

  • Porovnání Runtime souběžnosti na OpenMP

Porovnání preemptivní plánování, plánování spolupráce

Preemptivní modelu a plánování modely spolupráce jsou dva běžné způsoby povolit více úkolů, sdílení výpočetních prostředků, například procesory nebo hardware podprocesů.

Spolupráce a preemptivní plánování

Preemptivní plánování je kruhová, podle priority mechanismus, který poskytuje každý úkol výhradní přístup k výpočetní zdroje pro dané časové období a pak přepne do jiného úkolu.Preemptivní plánování je běžné v multitasking operačního systému, například Windows. Plánování spolupráce je mechanismus, který poskytuje každý úkol výhradní přístup k výpočetní zdroje dokud dokončení úkolu nebo úkol dává jeho přístup k prostředku.Runtime souběžnosti používá k dosažení maximální využití prostředků zpracování spolupráce plánování společně s preemptivní Plánovač operačního systému.

Rozdíly mezi preemptivní a spolupráce plánovače

Preemptivní plánovače snaží poskytnout více podprocesů rovný přístup k výpočetní prostředky k zajištění, že každý podproces díky pokroku.V počítačích s mnoha výpočetních prostředků zajistit spravedlivý přístup stane méně problematické; zajištění účinného využití zdrojů se však více problematické.

Plánovač preemptivní režimu jádra požaduje kód aplikace spoléhat na operační systém plánování rozhodování.Naopak spolupráce Plánovač uživatelský režim umožňuje kódu aplikace tak, aby plánování rozhodnutí.Protože mnoho plánování rozhodnutí učiněných v aplikaci Plánování spolupráce umožňuje, snižuje velkou režii, které souvisí s synchronizace v režimu jádra.Spolupráce Plánovač obvykle odkládat údaje plánování rozhodnutí jádra operačního systému, když nemá žádná práce naplánovat.Spolupráce Plánovač odkládat údaje také Plánovač operačního systému při blokování operace, které jsou předávány do jádra, ale operace nejsou sděleny Plánovač uživatelského režimu.

Plánování spolupráce a účinnosti

Preemptivní Plánovač je roven všechny práce, která má stejnou úroveň priority.Preemptivní Plánovač obvykle naplánuje podprocesů v pořadí, ve kterém jsou vytvořeny.Preemptivní Plánovač navíc poskytuje každý podproces časový úsek každým způsobem, na základě prioritu podprocesu.Přestože tento mechanismus zajišťuje spravedlivé (postup vpřed provede každý podproces), pochází některé náklady účinnosti.Například mnoho algoritmů výpočtu náročné nevyžadují spravedlnosti.Místo toho je důležité, že související úkoly dokončit v nejméně celkový čas.Plánování spolupráce umožňuje aplikaci efektivnější plánování práce.Zvažte například aplikaci, která má mnoho podprocesů.Plánování podprocesů, které nesdílejí zdroje současně spustit může snížit režii synchronizace a tím zvýšit efektivitu.Jiné efektivní způsob plánování úkolů je spustit potrubí úkoly (kde každý úkol pracuje na výstup předchozího) na stejném procesoru tak, aby vstupní každé fáze příležitosti již načten do mezipaměti.

Pomocí spolupráce a preemptivní plánování společně

Plánování spolupráce neřeší všechny problémy s plánováním.Úkoly, které jsou poměrně nepřinese další úkoly můžete využívat všechny dostupné prostředky výpočetní a zabránit v provádění pokroku další úkoly.Runtime souběžnosti používá výhody účinnosti spolupráce plánování doplnění záruky spravedlivé preemptivní plánování.Spolupráce Plánovač, který používá algoritmus krást práci distribuce práce mezi výpočetní zdroje představuje Runtime souběžnosti.Plánovač souběžnosti Runtime však také závisí na preemptivní Plánovač poměrně distribuovat zdroje mezi aplikacemi operačního systému.Můžete také vytvořit vlastní plánovače a Plánovač zásady v aplikacích vyrábět detailní kontrolu nad podprocesů.

Top

Porovnání souběžnosti Runtime rozhraní API systému Windows

Microsoft Windows rozhraní API, která je obvykle označována jako rozhraní API systému Windows (a dříve známá jako Win32), poskytuje programovací model, který umožňuje souběžný v aplikacích.Souběžnost Runtime je založena na rozhraní API systému Windows poskytovat další programovací modely, které nejsou k dispozici z operačního systému.

Runtime souběžnosti je založena na modelu podprocesu rozhraní API systému Windows provádět paralelní práce.Používá také Správa paměti v rozhraní API systému Windows a mechanismy podproces místní úložiště.V systému Windows 7 a Windows Server 2008 R2 využívá podporu rozhraní API systému Windows pro uživatele plánovatelnou podprocesů a počítačů, které mají více než 64 podprocesů hardwaru.Runtime souběžnosti rozšiřuje rozhraní API Windows poskytnutím Plánovač úloh spolupráce a krást práce algoritmu maximalizovat využití výpočetních prostředků a povolením více instancí současně plánovače.

Další informace o rozhraní API systému Windows naleznete v tématu Přehled rozhraní API systému Windows.

Programovací jazyky

Rozhraní API systému Windows používá k vystavení programovací model c programovací jazyk.Souběžnost Runtime poskytuje programovací rozhraní C++ využívá nejnovější funkce v jazyce C++.Například lambda funkce poskytují mechanismus stručné, typ bezpečné pro definování paralelní pracovní funkce.Další informace o nejnovějších funkcích C++ Runtime souběžnosti používá Přehled Concurrency Runtime.

Podprocesy a fondy podprocesů

Centrální souběžnosti mechanismus v rozhraní API systému Windows je podproces.Obvykle používají CreateThread funkci vytvořit podprocesů.Přestože jsou relativně snadno vytvořit a použít podprocesů, operační systém přiděluje značné množství času a jiné prostředky k jejich správě.Navíc Přestože každý podproces je zaručena přijímat ve stejnou dobu spuštění jako jiný podproces na stejné úrovni priority, přidružených režie vyžaduje vytvoření dostatečně velké úkoly.Menší nebo větší uzamykání úkolů režie přidružený souběžnosti převažují nad výhodou paralelně spuštěných úkolů.

Fondy podprocesů jsou jedním způsobem, jak snížit náklady na správu podprocesů.Podproces vlastní fondy a fond provádění podprocesu poskytované i malé pracovní položky efektivně pracovat paralelně povolit rozhraní API systému Windows.Fond podprocesů Windows udržuje pracovní položky ve frontě je budou.Každé pracovní položky je spuštěna v pořadí, ve kterém byla přidána do fondu.

Souběžnost Runtime implementuje krást práci algoritmus rozšířit FIFO mechanismus plánování.Algoritmus přesune úkoly, které jste ještě nezačalo pracovních položek spuštěné podprocesy.Přestože práce krást algoritmus může vyrovnávat pracovní vytížení, může také způsobit přeuspořádat položky práce.Tento proces přiobjednávání může způsobit pracovní položku Spustit v jiném pořadí, než byly předloženy.To je užitečné pomocí rekurzivních algoritmů, kde je lepší šanci, že data je sdílena mezi novější úkoly než mezi ty starší.Získání nových položek pro první spuštění znamená méně Neúspěšné přístupy do mezipaměti a případně méně chyb stránek.

Z pohledu operačního systému nekalé krást práci.Však při aplikaci implementuje algoritmus nebo úkolu pracovat paralelně, spravedlnosti dílčích úkolů mezi vždy nezáleží.Co záležitosti je, jak rychle na celkové dokončení úlohy.FIFO pro další algoritmy, je vhodné strategie plánování.

Chování v různých operačních systémech.

V systému Windows XP a Windows Vista aplikací používajících souběžný Runtime chovat podobně, s výjimkou, že zvýšení výkonu haldy v systému Windows Vista.

V systému Windows 7 a Windows Server 2008 R2 podporuje operační systém dále souběžnost a škálovatelnost.Tyto operační systémy podporují například počítače, které mají více než 64 podprocesů hardwaru.Tyto nové funkce využít, je nutné upravit existující aplikace používající rozhraní API systému Windows.Aplikace používající souběžnosti Runtime automaticky však používá tyto funkce a nevyžaduje žádné změny.

https://msdn.microsoft.com/cs-cz/library/dd627187(v=vs.120)

Top

Porovnání Runtime souběžnosti na OpenMP

Runtime souběžného zpracování umožňuje různé modely programování.Tyto modely mohou překrývat nebo doplnit modely z jiných knihoven.Tento oddíl porovnává Runtime souběžnosti na OpenMP.

Model programování OpenMP je definován otevřený standard a má definovaný vazby na programovací jazyky Fortran a C/C++.OpenMP verze 2.0 a 2.5 jsou vhodné pro paralelní algoritmy iterační; je jim provádět paralelní iterace přes pole data.OpenMP je nejúčinnější, pokud stupeň rovnoběžnosti je pre-determined a odpovídá dostupné zdroje v systému.OpenMP modelu je zejména vhodné rozlišovat pro vysoce výkonné výpočetní, kde jsou distribuovány na velmi velké problémy výpočetní zpracování zdrojů do jednoho počítače.V tomto scénáři je známé prostředí hardwaru a vývojáře lze přiměřeně očekávat, že výhradní přístup k výpočetní zdroje při spuštění algoritmu.

Však jiných, méně omezené výpočetní prostředí nemusí být funkční odpovídající OpenMP.Rekurzivní problémy (například quicksort algoritmus nebo hledání stromu dat) jsou například obtížnější implementovat pomocí OpenMP.Souběžnost Runtime poskytnutím doplňuje funkce OpenMP Paralelní knihovnu vzorků (PPL) a Asynchronní agenti knihovny.Na rozdíl od OpenMP poskytuje Runtime souběžnosti dynamický plánovač, který přizpůsobí dostupných zdrojů a upraví stupně paralelnost jako pracovní vytížení.

Mnoho funkcí v souběžném běhu lze rozšířit.Můžete také kombinovat stávající funkce, vytvořit nové.Protože OpenMP závisí na direktivami kompilátoru, nelze snadno rozšířit.

Další informace o souběžném běhu porovná OpenMP a jak přenést existující kód OpenMP použití Runtime souběžnosti viz Migrace z OpenMP do Concurrency Runtime.

Top

Viz také

Referenční dokumentace

Přehled rozhraní API systému Windows

Koncepty

Concurrency Runtime

Přehled Concurrency Runtime

Knihovna PPL (Parallel Patterns Library)

Knihovna asynchronních agentů

Další zdroje

OpenMP ve Visual C++