Kacc
Kacc
6
#programowanie #java

Mam taki problem dotyczący wielowątkowości do rozwiązania. Jest sobie obiekt klasy Osoba z listą rzeczy do kupienia, jest sobie obiekt klasy Sklep i w każdym sklepie jeden Pracownik. Osoba prosi Pracownika o rzeczy z listy, jak czegoś nie dostanie to potem idzie do następnego sklepu. Jak rozwiązać wielowątkowość, żeby Osoba z Pracownikiem sensownie się komunikowały? Jak rozwiązać kolejkę oczekujących klientów? Macie jakiś pomysł, lub moglibyście mnie nakierować na sensowne materiały w tej tematyce?
  • Najlepsze
  • Wszystkie komentarze
Nadrill
@Kacc: jakim cudem dostalem na mirko minusa xDDD
Nadrill
@Kacc: dlatego nienawidze javascriptu - problemy z watkami
k.....o
k.....o
@Nadrill: bos ciul i nie odrozniasz picia w szczawnicy od szczania w piwnicy
Mam_Glupi_Nick
@Nadrill: Twoja wypowiedz byla tak zalosna, ze @maciejkiner postanowil ja zaminusowac
Kacc
Kacc Autor
1
@Nadrill: piszesz ze srajfona to masz minusa xD
p.....7
p.....7
@Kacc: Zaimplementuj w sklepie bufor o jakiejś tam wielkości (np. maksymalnej liczby klientów) i dopisuj tam klientów.

Pracownik niech pobiera klienta z buforu.

Uważaj na synchronizację wątków, żeby pracownicy nie pobierali tego samego klienta w tym samym momencie.
Kacc
Kacc Autor
0
@Nadrill: to java ziomeczku

@phyrexia2007: jest jeden pracownik w jednym sklepie, więc nie będzie z tym problemu. Czyli klienta usypiać na czas stania w kolejce i potem pracownik wywołuje mu notify?
p.....7
p.....7
@Kacc: Ja bym to tak zrobił, potem po obsłużeniu usuwasz klienta z buforu i klient szuka następnego sklepu.

Na jakiej zasadzie klienci zostają przydzieleni do sklepu? Wszyscy do tego samego od razu idą i potem po kolei do następnych?
Kacc
Kacc Autor
0
@phyrexia2007: po kolei chodzą aż kupią wszystko co chcą, lub w żadnym sklepie nie znajdą tego co szukają - wtedy wątek się kończy
bartoneczek
@Kacc: a po co w ogóle robić to w wątkach? Poza tym podejście do tego od strony sklepu i pracownika jest imo błędne, ale ja się nie znam.

Ja bym puścił pętle z iteracją po każdym kliencie. Albo coś takiego. Sam nie wiem. XD Idę stąd.
Kacc
Kacc Autor
0
@bartoneczek: no właśnie polecenie jest takie, że mam to zrobić na wątkach #studbazaproblems
bartoneczek
@Kacc: no to jak już, to można by dla każdego klienta utworzyć swój własny wątek żeby w tym wątku leciał pętle po sklepach i dziękuje. Ale gdyby tych klientów było wielu lub bardzo wielu, to nie ma szans.

Inne podejście: wątek dla każdego sklepu i iterowanie po klientach, po prostu. Pracownik obsłuży wszystkich to sobie idluje. Tylko trzeba by zrobić jakąś globalną kolejkę, albo coś.
MacDada
jakim cudem dostalem na mirko minusa xDDD


@Nadrill: lol, daj znać jak się dowiesz :D
Nadrill
@kmicolo: xDD

@Kacc: harris, ross - algorytmy od podstaw - jest opisany podobny przypadek
p.....7
p.....7
@Kacc: http://pastebin.com/MFhx9pa7

To pisane na szybko w czasie jedzenia śniadanie więc pewnie jest źle i nie ma prawa działać, a w ogóle to jestem niewyspany i mnie głowa boli a zadanie jest głupie bo wątki są niepotrzebne. Pisane w notatniku, trzeba dodać importy i resztę kodu, główną metodę i posklejać w całość. A no i trzeba pomyśleć o synchronizacji.
Kacc
Kacc Autor
0
@phyrexia2007: dzięki, no właśnie z synchronizacją tego wszystkiego największy problem

@Nadrill: thanks doge, poczytam sobie
void_pointer
@Kacc: Może użyj biblioteki do symulacji...bo na symulacje mi to wygląda ;)