2009-01-15 12 views
6

Mam zamiar zająć się tym, co uważam za trudny problem, jak sądzę. Potrzebuję wielowątkowego przygotowania producentów i konsumentów.Przykładowe problemy przy wielowątkowych praktykach

Więc chcę zacząć mały. Jakie są problemy praktyczne, na różnych poziomach trudności, które byłyby dobre w praktyce wielowątkowej? (I nie wymyślone, niepraktyczne przykłady, które widzisz w książkach nie dedykowanych do współbieżności).

Jakie książki lub referencje poleciłbyś skupić się na współbieżności i podać dogłębne problemy i przypadki?

(Wolałbym nie skupiać się na problemie, który chcę rozwiązać, chcę tylko poprosić o dobre referencje i przykładowe problemy.To byłoby bardziej przydatne dla innych użytkowników.Nie jestem zatrzymany na problem .)

+0

Czy mógłbyś być bardziej konkretny odnośnie tego, co próbujesz zrobić? I dlaczego przykłady, które widzisz w książkach, nie pasują? – Guillaume

+0

Przykład problemu lub książka? Jeśli potrzebujesz książki, mówi to w tytule. – chakrit

+0

@guillaume - przykłady książek są zbyt proste (będziemy nadal w pierwszych kilku rozdziałach), albo wypisz jakiś ciąg lub odczytaj/zapisz część int. Sądzę, że chciałbym powiedzieć, że chciałbym przyjrzeć się studiom przypadków w świecie rzeczywistym. – moogs

Odpowiedz

2

Jeśli masz wystarczająco dużo czasu, aby inwestować Polecam książkę "współbieżności: modele państwowe & Java programy, 2nd Edition" Jeff Magee i Jeff Kramer, John Wiley & Sons 2006

można zignorować część Java jeśli używasz jakiegoś innego języka

Istnieje język używany do modelowania procesów i współbieżnych procesów nazywanych FSP. Aby być biegły w danym języku, trzeba zainwestować trochę czasu i energii. Istnieje narzędzie (LTSA, oba są bezpłatne i obsługiwane przez wtyczkę Eclipse lub samodzielną aplikację), które weryfikuje Twoje modele i sprawia, że ​​Twój model jest poprawny z punktu widzenia równoczesnej realizacji.

Tłumaczenie tego modelu na konstrukcje językowe to tylko kwestia techniki programowania i kilku wzorców projektowych.

2

Większość problemów z książkami tekstowymi, takich jak czytelnicy-pisarze, producenci-konsumenci lub wykształceni filozofowie, to ilustracje mutex. Wolałbym modelować prototyp, który jest uproszczonym przybliżeniem, większym problemem i iść dalej.

W niektórych sytuacjach widziałem sytuacje, w których konieczne jest unikanie zamka błyskawicznego i stosowane są środki zapobiegające zamarznięciu. Zawsze dobrze jest przeanalizować, czy algorytm Bankera pasowałby do przypadku, czy nie.

1

Nie jestem pewien, czego szukasz. Ale w rzeczywistych sytuacjach biznesowych, zwykle używamy pewnego rodzaju struktury wiadomości, robiąc rzeczy dla producentów. Typowo w Javie to JMS. I możesz użyć znakomitego Spring Framework, aby ci pomóc.

0

Szczerze mówiąc, wiele programów wielowątkowych w świecie rzeczywistym nie ma większego znaczenia niż czytanie/zapisywanie pewnych wartości (niezależnie od tego, czy są to ciągi znaków czy int) - bufory cykliczne (może wymagać połączenia sieciowego), czytniki/programy piszące plików dziennika , itp.

Powiedziałbym, że jeśli zaimplementujesz (lub znajdziesz) solidny (i ogólny) bufor cykliczny, a następnie uruchomisz całą komunikację wątek-wątek przez te bufory jako jedyny punkt kontaktowy, Obejmuje to bardzo dużą część synchronizacji z wieloma wątkami, którą możesz potrzebować. (Chyba, że ​​pracujesz w środowisku zgodnym z modą i musisz wpisać "przedsiębiorstwo", "przesyłanie wiadomości" lub cokolwiek innego na liście modów ... lub piszesz bazę danych lub system operacyjny.)

(Zwróć uwagę, że "bufor cykliczny" jest raczej terminem C-centrycznym, zakorzenionym w stosunkowo bezpośredniej manipulacji blokiem pamięci. Klasa kolejki Pythona implementuje tę samą podstawową zasadę w sposób skoncentrowany na listach i jestem pewien, że wiele inne języki mają konceptualnie podobne konstrukcje pod nieco innymi nazwami ...)

2

Całkowicie ignorując twoją prośbę, zasugeruję, że powinieneś spojrzeć na SEDA (architektura sceniczna sterowana zdarzeniami) jako sposób myślenia o tworzeniu wielowątkowego potoku producentów i konsumentów.

+0

alternatywny wgląd jest więcej niż mile widziany (może nie dla stackoverflow, ale ++ dla mnie. Upvote) – moogs

3

The little book of semaphores to dobra książka za darmo. Autor podejmuje wyjątkowe podejście, najpierw zadając problem, a następnie przedstawiając podpowiedzi przed udzieleniem odpowiedzi. Problemy stopniowo zwiększają poziom trudności, a książka nie jest napisana dla żadnego konkretnego języka, ale obejmuje ogólne koncepcje wielowątkowości.

+0

link, jeśli zepsuty –

+0

Link nie został złamany to było wskazywanie bezpośrednio do księgi pdf, która mogła sprawić wrażenie, że link nie został wczytany. W każdym razie zmieniłem link, aby teraz załadować stronę html o książce, a nie samą książkę pdf. – Raminder

Powiązane problemy