Cvičení 1

Zápočtové podmínky

Viz stránky předmětu.

Průběh cvičení

Úkoly

  1. Podívejte se, jaké možnosti pro paralelizaci a komunikaci mezi procesy váš oblíbený programovací jazyk nabízí.
  2. Ve svém oblíbeném programovacím jazyce implementujte sdílěný (globální) čítač (bez synchronizace) a ověřte, že řešení není funkční. Vytvořte funkci, která dle zadaného parametru spustí daný počet vláken. Každé vlákno inkrementuje čítač. K inkrementaci čítače použijte funkci, která:
    1. náhodný čas počká
    2. zkopíruje hodnotu z globálního čítače do jeho lokální kopie
    3. náhodný čas počká
    4. inkrementuje lokální kopii čítače
    5. uloží hodnotu z lokálního kopie do globálního čítače
  3. Promyslete, kde a proč vznikají chyby.