2010-09-30 8 views
14

Chcę uzyskać dobrą znajomość wielowątkowości w języku C#. Czytałem kilka artykułów takich jak Joseph Albahari's tutorials, które wyjaśniają pojęcia, ale jak wiesz, bez względu na to, ile czytasz, większość z nich staje się śmieciem, jeśli nie ćwiczysz. Potrzebuję czegoś, co ma pouczające i pragmatyczne przykłady kodu związane z rzeczywistymi praktykami życiowymi, a nie niektóre przykłady, które wypisują niektóre linijki. Masz jakieś sugestie?Sugestie ćwiczeń, aby pomóc w nauce wielowątkowości w języku C#

Odpowiedz

4

chłopaki Myślę, że znalazłem dobrą stronę: planet-source-code.com. Wyszukiwanie w Net kodów z „GW” słowo kluczowe wydaje się wrócić kilka dobrych przykładów, jak

  • wielu synchronizacji folderów gwintowany
  • wielo gwintowane serwer TCP
  • plik tła downloader
  • asynchronicznym. gniazdo
  • Udostępnianie plików P2P
  • prosty kontroler poczty konsol POP3 i wiele innych!

yay!

+0

Myślę, że powinieneś naprawić link: usunąć linie po ".com" – AlexSavAlexandrov

+0

OK, zrobiłeś to. – aslisabanci

2

Jeśli robisz jakiekolwiek projekty typu winform lub wpf, szybko natkniesz się na problemy, gdy spróbujesz zrobić "stuff" w wątku UI.

Załóżmy, że musisz przeczytać i przeanalizować zawartość dużego (2GB) pliku XML. Jeśli praca została wykonana w wątku UI, interfejs zawiesił się do czasu ukończenia pracy. I odwrotnie, jeśli wykonasz pracę poprawnie w wątku roboczym, możesz zachować responsywność interfejsu poprzez wiadomości i dać znać użytkownikowi, co aktualnie robisz (pasek stanu (ugh) lub wyświetlać w tekście, co masz na myśli "Czytanie XML", itp.)

Dobrym prostym przykładem byłoby wykonanie przykładowej aplikacji i zwolnienie go z obiektu BackgroundWorker w celu obsługi dowolnej pracy wykonywanej w tle (może to być nawet Thread.Sleep (10000)) lub coś banalnego.)

Powiedziałbym, że jest to jeden z wielu dobrych punktów wyjścia na ten temat.

http://msdn.microsoft.com/en-us/library/cc221403%28VS.95%29.aspx

+0

Jestem głównie w obszarze komunikacji w tle, z gniazdkami i usługami sieciowymi. ale dzięki za sugestię zacznę od tego :) – aslisabanci

2

Ten site ma kilka przykładowych aplikacji, które myślę, że byłoby aplikacje przyzwoite praktyki do wdrożenia. Wygląda jednak na to, że linki do kodu źródłowego są zepsute. Uważam jednak, że przedstawione wnioski stanowią bardzo praktyczne przykłady. Kilka obejmują:

  • Desktop Search
  • Download Manager Client
  • FTP
  • Kompresja
  • Multiple RSS
+0

Tak, tego właśnie szukałem. Szkoda, że ​​źródeł już nie ma :( – aslisabanci

3

Jakiś losowej liczby pożerające to dobry test dla tego. Nauczyłem się gwintowania, pisząc wyszukiwarkę liczb pierwszych, a następnie łamiąc moje numery "wyszukiwania" w bloki i używając wątku do przepracowania każdego z nich.

To pozwól mi ustawić niektóre zmienne dotyczące rozmiaru bloku, liczby wątków do użycia, czasu oczekiwania między wyzwalaniem wątków itp., Aby sprawdzić, jak każdy z nich wpływa na wydajność.

Powiązane problemy