portal Michała Hanćkowiaka
Begin main content
Search · Index
No registered users in community Materiały
in last 10 minutes

ALR - ćw - zadania dodatkowe do tematu D

poniższe zadania dotyczą modelu asynch "ze wspólną pamięcią" oraz j. BACI...

Zadanie D.1a, (2pkt), synchronizacja barierowa, z aktywnym czekaniem
Zdefiniuj w j. BACI funkcję barierową przypominającą "fiber yield" z symulatora.
Funkcja ta powinna umożliwić pisanie programów synchronicznych,
gdzie rolę wierzchołków grafu pełnią procesy/wątki BACI,
a granicę między rundami wyznacza wywołanie fun. barierowej.
Przetestuj czy funkcja działa poprawnie dla kilku wątków,
wykonujących nieskończoną pętlę z rundami i z licznikiem rund.
Dozwolone jest stosowanie słowa atomic w j. BACI.
Zauważ, że Twoje rozwiązanie nadaje się nie tylko do j. BACI,
ale także do realnych j. programowania (np. C++/bibl pthread).

Uwaga: zakładamy, że liczba procesów/wątków jest znana (i stała).

Zadanie D.1b, (2pkt), synchronizacja barierowa, bez aktywnego czekania
To samo co D.1a, ale tym razem BEZ aktywnego czekania
(tzn. że trzeba koniecznie użyć narzędzi typu semafory/monitory!)

zadania bez j. BACI...

Zadanie D.2, sqlite jako współdzielona pamięć
Przeanalizuj przykład thread05b2_1b_ALR.tcl, w którym 8 wątków z puli operuje na pamięciowej b.d. sqlite.
Zwróć uwagę na błędy przy równoczesnym select i update (proc sq_powt3 naprawia ten błąd przez powtarzanie).
Wymyśl sposób na zmniejszenie liczby tych błędów i przedstaw go w eksperymencie.
Materiały na temat współbieżnego dostępu do sqlite: -1-, -2-, -3-, -4-, -5-, -6-, -7-, -8-, -9-.
Generalnie współb. dostęp do bazy sqlite odbywa się na zasadzie problemu "czytelników i pisarzy".





uwaga: portal używa ciasteczek tylko do obsługi tzw. sesji...