6. diel - Multithreading v Jave - Semafor
V predchádzajúcej lekcii, Multithreading v Jave - Užitočné komponenty pre paralelizmus , sme si zhrnuli ďalšie možné techniky pre paralelné programovanie. Dnes si ukážeme prvú z pokročilých tried pre paralelné programovanie - semafor.
Kritická sekcia
Než sa pustíme do popisu jednotlivých synchronizačných primitív, vysvetlíme si podrobne, čo to presne kritická sekcia je. V predchádzajúcich lekciách sme sa o nej letmo zmienili, ale nevysvetlili si ju do podrobna. Poďme to napraviť.
Kritická sekcia je miesto, kde dochádza k časovému súbehu, teda je vykonávaný prístup k spoločným dátam.
Naším cieľom je zabezpečiť, aby sa v kritickej sekcii vyskytol iba jeden proces / vlákno.
Každá kritická sekcia sa vzťahuje ku konkrétnym dátam, ku
ktorým sa v nej pristupuje (x, y, z,
s1, ...). Snažíme sa nezamyká všetko, ale len
konkrétne kritické miesta zdieľaných dát.
Jedno synchronizačný primitívom sme si už predstavili: monitor.
Podpora monitora musí byť implementovaná priamo v programovacom jazyku. V
Jave je monitor prítomný pomocou kľúčového slova
synchronized. Teraz prejdeme k ďalším primitívom.
Semafor v C
Aby sme pochopili princípy semafore, ukážeme si krátku abstraktné implementáciu v jazyku C. Dijkstra (1962/1963) navrhol primitívom, ktoré zjednodušuje
...koniec náhľadu článku...
Pokračuj ďalej
Došiel 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ť iba tento kurz
Získaj okamžitý prístup ku kurzu bez
časového obmedzenia.
150 kreditov
Obsah článku spadá pod licenciu Premium, kúpou článku súhlasíš so zmluvnými podmienkami.
- Prístup k jednotlivým lekciám podľa spôsobu obstarania.
- 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 tutoriále sa zoznámime s pokročilejšími technikami pre paralelné programovanie v jazyku Java. Predstavíme si semafor.
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ť.