3ID13B Sprawozdanie Lab 8 Programowanie Współbieżne

Programowanie współbieżne

Wątki i mutexy

Wykonanie:

Paweł Markiewicz


Laboratorium nr 8


Data: 02.12.2021


Zadanie 1


Napisać (lub przerobić jeden z poprzednich) program w którym proces macierzysty tworzy 100 lub więcej procesów, które nic nie wykonują i się kończą. Proces macierzysty czeka na zakończenie wszystkich swoich procesów, poczym zwraca zmierzony czas całej operacji (np. za pomocą clock_gettime (patrz. man -s3 clock_gettime)). Napisać analogiczny program bazujący na wątkach. Porównać wyniki. Czy wątki są szybsze?

Napisać program w którym:


Zadanie 2



Stworzymy sobie 5 wątków w odstępach 1 sekundowych. Każdy wątek powinien mieć 10s „sleepa”.

Za pomocą jednej struktury ze zmiennymi typu char* oraz int przekazać (przez parametr) tworzącym się wątkom ich unikalne nazwy i numery np.: „wątek1”;0, „wątek2”;1, „wątek3”;3 itd. Zmiana tych danych ma następować po „sleepach” w procesie macierzystym. Wątki przed swoim zakończeniem powinny wypisać dane przekazane im przez parametr, wykorzystać dane specyficzne wątku. Porównać działanie z danymi specyficznymi wątku i bez.

Pierwszy uruchomiony wątek powinien stworzyć klucz danych specyficznych wątku (wykorzystać pthread_once), natomiast, każdy z wątków, ustawić daną specyficzną wątku dla jego nazwy, zobaczyć jak działa.

W procesie macierzystym zrezygnować z 1s. „sleepów” tak by wątki startowały wszystkie bez czekania. Czy coś się zmieniło?

Wykorzystać mutexy do zsynchronizowania zakładania danych specyficznych wątku przed ich zmianą przez proces macierzysty.


Zadanie 3


Napisać program tworzący dwa wątki.


W pierwszym wątku po 2s wywołać pthread_cancel z tidem wątku drugiego ponowić próbę po kolejnych 2s.

W drugim wątku na samym początku za pomocą pthread_set_cancelstate zabezpieczyć się przed jego usunięciem, poczym po 3s pozwolić na usunięcie.

Do obu wątków dodać procedurę porządkowania wyświetlającą jakiś komunikat.

Przetestować funkcję usuwającą procedurę porządkującą z parametrem 1 i 0.




Wnioski


Podczas wykonywania ćwiczenia przypomniałem sobie zasadę działania oraz obsługi wątków w

Linuksie. Podczas tworzenia programów do zadania 1 zauważyłem że wątki sa znacznie szybsze od

procesów dzieje się tak dlatego że podczas worzenia wątków nie jest kopiowane cała zawartość

obszaru pamięci przydzielonej procesowi macierzystemu.

w zad 2 nauczyłem się pracować z mutexami które są bardzo pomocne do kontrolowania kodu we-wnątrz wątków.


Wyszukiwarka

Podobne podstrony:
3ID13B Sprawozdanie Lab 9 Programowanie Współbieżne
3ID12A Sprawozdanie Lab 6 Programowanie Współbieżne
Mariusz Charczuk Programowanie Współbieżne Lab.1 gr. 3ID11A, Studia PŚK informatyka, Semestr 5, Prog
WYDZIA~1, Labolatoria fizyka-sprawozdania, !!!LABORKI - sprawozdania, Lab, !!!LABORKI - sprawozdania
sprawozdanie lab 6
Programowanie Współbieżne WEISS
SPRAWOZDANIE Z LAB 2 Badanie wypływu cieczy ze zbiornika
SPRAWOZDANIE LAB 4 mieszacz
Programowanie współbieżne i rozproszone w języku Java stpiczynski
Fizyka cw 123 wyniki, Labolatoria fizyka-sprawozdania, !!!LABORKI - sprawozdania, Lab, !!!LABORKI -
półprzewodnikowe złącze p-n, Labolatoria fizyka-sprawozdania, !!!LABORKI - sprawozdania, Lab, !!!LAB
Sprawozdanie Lab 1 (2)
SPRAWOZDANIE I PRZYKŁAD PROGRAMU, SPRAOZDANIE STRONA TYTUŁOWA

więcej podobnych podstron