Search
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.
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
Implementujte vícevláknový program prod-cons splňující následující požadavky:
prod-cons
main()
argv[1]
sysconf(_SC_NPROCESSORS_ONLN)
int ret, x; char *text; while ((ret = scanf("%d %ms", &x, &text)) == 2) { ... }
%ms
free()
malloc()
new
\n
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í.
-Wall -g -O2
EXTRA_CFLAGS
-fsanitize=address -fno-omit-frame-pointer
Překladač nesmí generovat žádná varování.
Nastudujte si použití podmínkový proměnných a k tomu příslušné funkce v knihovně pthread: