Programowanie współbieżne - Lista 1
Zadanie 1
Zapoznać się z programem prod-kons.c
licznik.c . Następnie
- Napisać wersję programu licznik.c która zamiast instrukcji
assemblerowych używa semaforów do zapewnienia wyłącznego
dostępu do zmiennej. Tzn. powiększanie zmiennej 'wynik'
ma sie odbywać w sekcji krytycznej.
- Wypróbować wersję programu licznik.c bez żadnego mechanizmu
wzajemnego wykluczania (np. usunąć słowo 'lock' z instrukcji
assemblerowej).
- Porównać z wersją sekwencyjną programu licznik.c gdzie
'producent1' wykonuje się najpierw a 'producent2' potem
(przy tym oczywiście nie potrzeba żadnego mechanizmu wzajemnego wykluczania)
Porównać szybkość.
Zadanie 2
Zapoznać się z programem prod-kons.c . Następnie
- Przerobić program, tak by mieć kilku producentów i konsumentów.
Producenci mają wytwarzać liczby z rozłącznych przedziałów, konsumenci
sumować co im się uda zdobyć. Porównać wyniki konsumentów.
- Przerobić program, tak by producent wypełniał tablicę liczbami losowymi
(użyć srandom by zapewnić sobie powtarzalność wyników)
zaś konsument sumował sinusy tych liczb.
- Napisać sekwencyjną wersję przerobionego programu. Porównać szybkość
wersji równoległej z sekwencyjną, jak szybkość zależy od
rozmiaru tabeli?