Programowanie współbieżne - Lista 2
Programowanie współbieżne - Lista 2
Zadanie 1
Zapoznać się z programem licznik.c . Następnie
- Napisać wersję sekwencyjną która wykonuje to samo obliczenie. Porównać
szybkość.
- Usunąć prefix "lock" z instrukcji asemblerowej. Porównać działanie.
- Zastąpić istrukcję asemblera "incl" przez "wynik++", dodać semafor
tak by tylko jeden wątęk na raz modyfikował zmienną wynik. Porównać
szybkość.
- Przesunąć powiększanie zmiennej "wynik" do oddzielnej funkcji,
porównać.
Porównać zachowanie na maszynie jednoprocesorowej i wieloprocesorowej.
Zadanie 2
Porównać zachowanie programów z listy 1 na maszynie jednoprocesorowej
i wieloprocesorowej.
Zadanie 3
Obejrzeć stronę manuala dla "getchar_unlocked" i "putchar_unlocked".
Napisać program kopiujący pliki znak po znaku przy pomocy "getchar"
i "putchar". Zrobić też wersję wielowątkową -- każdy wątek ma czytać
co potrafi z (wspólnego) pliku wejściowego i pisać do pliku wyjściowego.
Następnie zamienić w wersji jednowątkowej wywołania "getchar" i "putchar"
na "getchar_unlocked" i "putchar_unlocked".
Porównać działanie i szybkość.