Table of Contents

Vlákna a synchronizace

Na tomto cvičení byste si měli vyzkoušet jak vytvořit vlákno v jazyce C s využitím knihovny pthread a jak vlákna synchronizovat tak, aby nedošlo k poškození dat se kterými se pracuje z více vláken.

Domácí příprava

Pro toto cvičení budete potřebovat znalosti o tom

Potřebná teorie byla vyložena na přednášce, včetně ukázek použití funkcí knihovny pthread. Před cvičením je doporučeno podívat se na manuálové stránky potřebných funkcí, zejména

Zadání úlohy

Implementujte vícevláknový program prod-cons splňující následující požadavky:

Do odevzdávacího systému nahrajte svůj zdrojový kód a Makefile, který vygeneruje program prod-cons ve stejném adresáři jako Makefile. Program překládejte s přepínači -Wall a -g. Překladač nesmí generovat žádná varování.

Pokud vám BRUTE vrací podezřelé chybové hlášky, zkuste váš program navíc zkompilovat s přepínači -fsanitize=address -fno-omit-frame-pointer. První přepínač způsobí, že se do vygenerovaného kódu přidají kontroly na mnoho typických chyb. Výsledný program pak ale běží mnohem pomaleji a potřebuje mnohem více paměti. Druhý přepínač způsobí, že vypisované chybové hlášky budou srozumitelnější.

Před uploadem do BRUTE tyto přepínače zase odstraňte, protože program pak díky pomalosti a paměťovým nárokům neprojde některými testy a navíc vygenerované kontroly nejsou kompatibilní s kontrolami, které provádí BRUTE.

Domácí příprava na další cvičení

Nastudujte si použití podmínkový proměnných a k tomu příslušné funkce v knihovně pthread: