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
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.
Obmedzená ponuka: Nauč sa všetko a ušetri
Obsah článku spadá pod licenciu Premium, kúpou článku súhlasíš so zmluvnými podmienkami.
- 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ť.