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 tento kurz
Obsah článku spadá pod licenci Premium, koupí článku souhlasíš se smluvními podmínkami.
- Neomezený a trvalý přístup k jednotlivým lekcím.
- 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íť.