17. diel - Semafory v C ++
V minulej lekcii, Bariéry a závory v C ++ , sme si predstavili nové synchronizačné entity - bariéry a závory, pomocou ktorých môžeme vlákna zosynchronizovať na konkrétnom mieste.
V dnešnej lekcii sa pozrieme na semafory, čo sú ďalšie entity určené na signalizáciu medzi vláknami. Ukážeme si, ako pomocou neho urobiť mutex, synchronizovanú frontu a ako ho implementovať v C ++.
Semafor
Semafor je štruktúra, ktorá svojím spôsobom kombinuje mutex, počítadlo a podmienenú premennú do jedného celku. Pri vytváraní sa semafór inicializuje počiatočnou hodnotou počítadla. Vlákno má možnosť počítadlo zvýšiť alebo znížiť. Ak sa vlákno pokúsi znížiť počítadlo, ktoré je už na nule, bude vlákno uspanie do doby, než bude hodnota pozitívne. To je vlastne celá veda - nič viac v tom nie je.
Použitia semaforu
Zaujímavá sú rôzne použitia semaforu.
Semafor ako mutex
Pozrime sa na prvý príklad použitia - semafor môžeme použiť ako mutex. To urobíme tak, že semafor vytvoríme s
...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 sa pozrieme na semafory - štruktúry slúžiace na signalizáciu medzi vláknami a alternatívu k mutexu.
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ť.