Table of Contents

Cvičení 5 : 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říznaky -Wall -g -O2 a navíc s příznaky v proměnné EXTRA_CFLAGS (evaluátor ji bude nastavovat podle potřeby). Pokud tato proměnná není definována na příkazové řádce make, nastavte její hodnotu na “-fsanitize=address -fno-omit-frame-pointer” (viz např. operátor ''?=''). Pokud provádíte překlad a linkování odděleně, používejte příznaky v EXTRA_CFLAGS také při linkování.

Překladač nesmí generovat žádná varování.

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: