Syllabus Lab #6
Cel zajęć:
Przedstawić zastosowanie muteksów i zmiennych warunkowych
Opis programu:
Program będzie bazował na List. 7.8 ze str. 120, jednak w takiej formie, w jakiej jest w książce,
zastosowanie muteksów nie ma znaczenia. W związku z tym, w ramach zajęć należy wprowadzać
modyfikacje wg. syllabusu. Dodatkowo, w celu demonstracji operacji na zmiennych na stosie vs. na
stercie, należy napisać program wprowadzający.
Program wprowadzający:
Proces w funkcji main ustawia zmienne lokalne a i b na jakieś wartości i je wyświetla. Następnie
proces tworzy wątek, który ustawia zmienne lokalne a i b (o takiej samej nazwie) na inne wartości i
też je wyświetla. Po utworzeniu wątku proces w funkcji main ponownie wyświetla wartości
zmiennych a i b.
- Co można powiedzieć o wartościach a i b ustanowionych przez wątek w kodzie wątku?
Następnie zmieniamy obszar pamięci zmiennych a i b ze stosu na stertę umieszczając je poza
funkcją main i kodem wątku (bezpośrednio pod dyrektywami i uruchamiamy program.
- Co można powiedzieć o wartościach a i b ustanowionych przez wątek w kodzie wątku?
Program demonstrujący zastosowanie muteksów:
Krok 1:
Należy przepisać List. 7.8 ze str. 120 i zakomentować:
pthread_mutex_t mutex;
pthread_mutex_lock(&mutex); (x2)
pthread_mutex_unlock(&mutex); (x2)
pthread_mutex_init(&mutex,NULL);
Dodatkowo należy zamienić wewnątrz linijek printf a i b na x i y .
Krok 2:
Zakomentować sleep w kodzie jednego z watkow i uruchomić program. Zakomentować sleep w
obu wątkach. Jak wyjaśnić zachowanie programu?
Krok 3:
Odkomentować komendy sleep i uruchomić. Następnie odkomentować pozostałe linie. Czy
obecność muteksów zmienia zachowanie programu? (NIE)
Krok 4:
Zmodyfikować program tak, aby zademonstrować działanie muteksów. W tym celu należy:
- przenieść komendy sleep wewnątrz wątków przed wywołaniem funkcji pthread_mutex_unlock i
ustawić czas w funkcjach sleep na 1 sekundę dla wątku 1 i np. na 3 sekundy dla wątku 2. Jak
wyjaśnić działanie muteksów?
Dla dociekliwych:
Zmodyfikować program tak, aby za pomocą zmiennych warunkowych uzyskać zadaną
funkcjonalność wg. podrozdziału 7.12.
W ramach ćwiczenia, student:
1. Doskonali umiejętność posługiwania się materiałami zródłowymi, w tym książki o
programowaniu oraz strony internetowej z instrukcją użytkownika dla wsparcia systemu QNX
2. Przyswaja wiedzę z zagadnienia zapewnienia wzajemnego wykluczania
3. Doskonali metodę tworzenia i zakończenia wątków
Wyszukiwarka
Podobne podstrony:
Syllabus lab 2Syllabus Lab 5Lab cpplab 2T2 Skrypt do lab OU Rozdział 6 Wiercenie 3IE RS lab 9 overviewlab pkm 3lab chemia korozjalab tsp 3socjologia syllabusLabSyllabus do Modułu AM4 Arkusze kalkulacyjne, poziom zaawansowany wersja 1 0 6Konsp Lab TK ZiIP sem3d 1stwięcej podobnych podstron