Vícevláknové zpracování

Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od verze recenzované 16. března 2016; kontroly vyžadují 43 úprav .

Multithreading  ( angl.  Multithreading ) je vlastnost platformy (například operačního systému , virtuálního stroje atd.) nebo aplikace spočívající v tom, že proces generovaný v operačním systému se může skládat z několika běžících vláken " paralelně “, pak jíst bez předepsaného pořadí včas . U některých úkolů může toto oddělení dosáhnout efektivnějšího využití počítačových zdrojů .

Taková vlákna se také nazývají vlákna popravy (z anglického  vlákna popravy ); někdy nazývané „vlákna“ (doslovný překlad anglického  vlákna ) nebo neformálně „vlákna“.

Popis

Podstatou multithreadingu je kvazi-multitasking na úrovni jednoho spustitelného procesu, to znamená, že všechna vlákna jsou vykonávána v adresovém prostoru procesu. Kromě toho všechna vlákna v procesu sdílejí nejen společný adresní prostor, ale také společné deskriptory souborů . Běžící proces má alespoň jedno (hlavní) vlákno.

Multithreading (jako programovací doktrína ) by neměl být zaměňován s multitaskingem nebo multiprocessingem , i když operační systémy , které implementují multitasking , mají tendenci implementovat také multithreading.

Mezi výhody vícevláknové implementace konkrétního systému oproti multitaskingu patří následující:

Mezi výhody vícevláknové implementace konkrétního systému oproti jednovláknové patří následující:

V případě, že vlákna provádění vyžadují relativně složitou vzájemnou interakci, mohou nastat problémy s multitaskingem, jako je uváznutí.

Implementace hardwaru

Na běžném procesoru se o správu vláken stará operační systém. Vlákno se spouští, dokud nedojde k hardwarovému přerušení, systémovému volání nebo dokud nevyprší čas, který mu operační systém přidělil. Poté se procesor přepne do kódu operačního systému, který uloží stav vlákna (jeho kontext) nebo se přepne do stavu jiného vlákna, kterému je také přidělen čas na provedení. Při takovém multithreadingu je na kód operačního systému, který přepíná kontexty, vynaložen dostatečně velký počet cyklů procesoru. Pokud je podpora vláken implementována v hardwaru, pak samotný procesor bude schopen přepínat mezi vlákny a v ideálním případě provádět několik vláken současně pro každý takt. Pro operační systém a uživatele bude jeden takový fyzický procesor považován za více logických procesorů.

Existují dvě formy multithreadingu, které lze implementovat v procesorech v hardwaru:

Typy implementace vláken

  1. Žádné přerušení časovače ve stejném procesu
  2. Když na proces použijete blokovací systémový požadavek, zablokují se všechna jeho vlákna.
  3. Složitost realizace

Interakce s vláknem

V prostředí s více vlákny se často vyskytují úkoly, které vyžadují pozastavení a obnovení některých vláken v závislosti na práci ostatních. Zejména se jedná o úkoly související s prevencí přístupových konfliktů při použití stejných dat nebo zařízení z paralelně spustitelných vláken. K řešení takových problémů se používají speciální objekty pro interakci vláken, jako jsou vzájemné vyloučení (mutexy), semafory, kritické sekce, události atd. Mnohé z těchto objektů jsou objekty jádra a lze je použít nejen mezi vlákny stejného procesu, ale také pro interakci mezi vlákny různých procesů.

Kritika terminologie

Překlad anglického výrazu vlákno jako „vlákno“ v kontextu souvisejícím s programováním je v rozporu s jeho překladem „vlákno“ v obecném jazykovém kontextu a také vytváří kolize s pojmem Data stream .

S pojmem „stream“ se však pojí překlady zahraniční technické literatury pořízené v 70. letech nakladatelstvím Mir. V současnosti je v „akademických kruzích“ (tedy v učebnicích, učebních pomůckách, vysokoškolských kurzech, disertačních pracích atd.) považován za referenční. Termíny „nit“, „nit“ atd. jsou považovány za technický žargon .

Viz také

Literatura

Poznámky

  1. Jeffrey Richter . "Jeffrey Richter. Windows pro profesionály. Vytváření účinných aplikací WIN32 přizpůsobených specifikám 64bitových Windows. 2001
  2. MSDN http://msdn.microsoft.com/en-us/library/ms682530%28VS.85%29.aspx Archivováno 23. prosince 2011 na Wayback Machine

Odkazy