Wątki, mutex - pomysł na projekt :)

0

Prześle swoją korespondecję z prowadzącym może to wiele wyjaśni :)

byłem pewien, że już Panu odpowiedziałem. Przepraszam. Temat nie jest do końca dobry. Co z synchronizacją? Do przemieszczania rybek przydatny będzie jeden mutex na "mapę". Wtedy wszystkie kolizje rybek odbywają się przy poruszania, więc związany jest z nimi ten sam mutex. Kolizja z akwarium jako takim nawet nie wymaga zasobu (bo ściany akwarium nie są zasobem, w przeciwieństwie do miejsca), a jeśli nawet to dalej obsługuje to ten sam mutex.

Reasumując. W takiej wersji będzie Pan miał tylko jeden zasób. A ponieważ walczą o niego tylko i wyłącznie rybki, to tak naprawdę z tym zasobem związana będzie tylko jedna sekcja krytyczna.

To jest za mało. Musi Pan wymyślić coś, żeby był jeszcze co najmniej jeden zasób, tak by potrzeba było więcej mutexów. Może Pan spróbować z jedzeniem, ale tutaj może Panu wyjść, że dalej daje się to zrobić tym samym mutexem, który służy do poruszania.

Wysyłam ponownie, czy można byłoby się dowiedzieć czy poniższy temat byłby przyjęty?

Przesyłam opis projektu, który chciałbym zrealizować na wątkach:
Byłaby to symulacja akwarium, w którym pływałoby kilka rybek każda by miała swoją prędkość swoją losową trasę oraz losowy punkt startowy. Do tego rybki by miały obsługę zderzeń z akwarium i ze sobą. Wizualizacja w konsoli :)

0

http://pl.wikipedia.org/wiki/Problem_czytelnik%C3%B3w_i_pisarzy
Możesz nawet zrobić wszystkie trzy warianty ;-)

0

Tylko, że jest zastrzeżenie:
Aplikacja wielowątkowa ma ukazywać praktyczne zastosowanie wątków i synchronizacji między nimi. Niedopuszczane są wszelkie podstawowe i ogólne tematy typu "problem pięciu filozofów". Tematem może być np. prosta gra wykorzystująca mechanizmy wielowątkowości. Ostrzegam przed przerostem formy nad treścią!

0

No ale...gdzie tutaj jest jakieś pytanie? Oczekujesz, że ktoś wymyśli Ci temat projektu, czy opisze jak to napisać?

0

No nie radze sobie z wymyśleniem : ( Napisze to sam.

0

Komunikator internetowy - jeden wątek pobiera dane, drugi wysyła a trzeci prezentuje.

0

Zrób symulację fabryki która wytwarza jakieś dwa materiały m1 i m2,
m1 będzie skłądać się z :
"n1" surowców s1,
"n2" surowców s2
"n3" surowców s3
oraz będzie miał czas produkcji tp1

surowiec m2 będzie skladać sie z
n4 surowców s4
n5 surowców s1
n6 surowców s2
oraz czas produkcji tp2

Fabryka ma magazyn dla każdego surowca i kazdy ma jakaś tam pojemność max

Do tego kazdy surowciec ma swoją fabrykę która wytwarza go w jakimś czasie Ti (dla kazdego inny) + losowa wartość opóźnienia (zmienna co nowy surowiec). Oraz jest jakiś czas dostawy Tw.
Fabryka może wytwarzać produkty równolegle(fabryka ma dwa wątki - taśmy produkcyjne) pod warunkiem ze ma do tego surowce.

Oba wątki fabryki synchronizują sie na magazynach (dwa surowce sa wspólne trzeba dobrac odpowiednie wagi n i tp zeby jedna produkcja nie wykonywala sie stale). Kiedy wątek produkcji zobaczy ze ma dostępne surowce od razu odejmuje je z magazynu i czeka tp czasu az zakonczy produkcje. Na magazynach również synchronizują sie
fabryki surowców, które sprawdzają w magazynie jest miejsce na dostawę surowca....

Na bazie tego może coś wymyslisz.

0

Może program do wielowątkowego przetwarzania obrazów na jakichś prostych filtrach? Jak jesteś zainteresowany to daj znać na priv. Wyślę treść zadania.

1

Jak dla mnie pomysł z rybkami jest bardzo dobry.
Aby spełnić wymóg "więcej niż jeden mutex", wprowadźmy zasadę "nobody the f*cks moves, i got this now" (jednocześnie może poruszać się tylko jedna rybka) i załóżmy, że rybki są układem rozproszonym, beż żadnego centralnego unit'u ( bez akwarium, mapy etc. ) mogącego przechowywać informację o poruszaniu. Przy dodawaniu rybki do systemu, tylko najbliższa rybka zostaje poinformowana o istnieniu nowej rybki. Gdy jakaś rybka chce się poruszyć, musi odpytać wszystkie najbliższe rybki, czy żadna ze znajomych ich znajomych się nie rusza. I w tym momencie masz takie zakleszczenie, że o jezus maria ( o co chyba chodzi Twojemu sorowi ).

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0