IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

16. diel - Bariéry a závory v C ++

V minulej lekcii, POSIX a Windows Threading library v C ++ , sme si predstavili natívne knižnice POSIX threads slúžiace pre UNIX-like systémy a Windows Threading pre Windows.

Dnes si opäť rozšírime obzory a pozrieme sa na bariéry a závory, ktoré nám umožňujú paralelizovat naše algoritmy.

Bariéry

Bariéra (anglicky barrier) je štruktúra umožňujúca synchronizovať beh vlákien.

Motivácia

Na začiatku kurzu sme niekoľkokrát zdôrazňovali, že je potrebné nad programom myslieť paralelne ako sekvenčne. Operačný systém sa môže rozhodnúť nejaké vlákno pozastaviť, spustiť s oneskorením a podobne. Vo výsledku sa môže stať, že vlákno začínajúci volaním sleep() po 1s môže byť spustené skôr, než vlákno bez uspania. Práve bariéry tento problém rieši.

Funkčnosť

Pri vytvorení bariéry odovzdáme počet vlákien, ktoré majú na bariére čakať. Každé vlákno, ktoré sa k bariére dostane, sa zablokuje. Až až je počet čakajúcich vlákien rovný odovzdanej hodnote, bariéra vlákna odblokuje a dovolí im pokračovať (niekedy sa môžeme stretnúť s pojmom "pretrhnutiu bariéry"). Potom sa bariéra opäť aktivuje a znovu čaká na daný počet vlákien.

Svojím spôsobom teda bariéra zaisťuje, že sa všetky vlákna (resp. Ich daný počet) stretnú na rovnakom mieste v programe alebo minimálne na rovnakej synchronizačný entite.

Závora

Závora (anglicky latch) je zjednodušenie bariéry.

Funkčnosť

Fungovanie je totožné s bariérou, len s tým rozdielom, že závora


 

...koniec náhľadu článku...
Pokračuj ďalej

Vedomosti v hodnote stoviek tisíc získaš za pár korún

Minul si až sem a to je super! Veríme, že ti prvé lekcie ukázali niečo nového a užitočného.
Chceš v kurze pokračovať? Prejdi do prémiové sekcie.

Kúpiť tento kurz

Kúpiť všetky aktuálne dostupné lekcie s funkciou odovzdávanie úloh iba za 525 kreditov
Aktuálny stav konta 0 kreditov
Kúpou tohoto balíčku získaš prístup ku všetkým 23 článkom (23 lekcií) tohoto kurzu.

Obsah článku spadá pod licenciu Premium, kúpou článku súhlasíš so zmluvnými podmienkami.

Čo od nás v ďalších lekciách dostaneš?
  • Neobmedzený a trvalý prístup k jednotlivým lekciím.
  • Kvalitné znalosti v oblasti IT.
  • Zručnosti, ktoré ti pomôžu získať vysnívanú a dobre platenú prácu.

Popis článku

Požadovaný článok má nasledujúci obsah:

V C ++ tutoriálu si predstavíme nové synchronizačné entity - bariéry a závory, pomocou ktorých môžeme vlákna zosynchronizovať na konkrétnom mieste.

Kredity získaš, keď podporíš našu sieť. To môžeš urobiť buď zaslaním symbolickej sumy na podporu prevádzky alebo pridaním obsahu na sieť.

Článok pre vás napísal Patrik Valkovič
Avatar
Věnuji se programování v C++ a C#. Kromě toho také programuji v PHP (Nette) a JavaScriptu (NodeJS).
Aktivity