Lekce 6 - Multithreading v Javě - Semafor
V předchozí lekci, Multithreading v Javě - Užitečné komponenty pro paralelizmus, jsme si shrnuli další možné techniky pro paralelní programování.
Dnes si ukážeme první z pokročilých tříd pro paralelní programování - semafor.
Kritická sekce
Než se pustíme do popisu jednotlivých synchronizačních primitiv, vysvětlíme si podrobně, co to přesně kritická sekce je. V předchozích lekcích jsme se o ní letmo zmínili, ale nevysvětlili si ji do podrobna. Pojďme to napravit.
Kritická sekce je místo, kde dochází k časovému souběhu, tedy je prováděn přístup ke společným datům.
Naším cílem je zajistit, aby se v kritické sekci vyskytl pouze jeden proces/vlákno.
Každá kritická sekce se vztahuje ke konkrétním datům, ke
kterým se v ní přistupuje (x, y, z,
s1, ...). Snažíme se nezamykat vše, ale pouze
konkrétní kritická místa sdílených dat.
Jedno synchronizační primitivum jsme si již představili:
monitor. Podpora monitoru musí být implementována přímo v
programovacím jazyce. V Javě je monitor přítomen pomocí klíčového slova
synchronized. Nyní přejdeme k dalším primitivům.
Semafor v C
Abychom pochopili principy semaforu, ukážeme si krátkou abstraktní implementaci v jazyce C. Dijkstra (1962/1963) navrhl primitivum, které zjednodušuje
...konec náhledu článku...
Pokračuj dál
Došel jsi až sem a to je super! Věříme, že ti první lekce ukázaly něco nového a užitečného.
Chceš v kurzu pokračovat? Přejdi do prémiové sekce.
Koupit pouze tento kurz
Získej okamžitý přístup ke kurzu bez
časového omezení.
150 Kč
Obsah článku spadá pod licenci Premium, koupí článku souhlasíš se smluvními podmínkami.
- Přístup k jednotlivým lekcím dle způsobu pořízení.
- Kvalitní znalosti v oblasti IT.
- Dovednosti, které ti pomohou získat vysněnou a dobře placenou práci.
Popis článku
Požadovaný článek má následující obsah:
V tutoriálu se seznámíme s pokročilejšími technikami pro paralelní programování v jazyce Java. Představíme si semafor.
Kredity získáš, když podpoříš naši síť. To můžeš udělat buď zasláním symbolické částky na podporu provozu nebo přidáním obsahu na síť.