(Dnes jen krátká informace.)
Programování v multithreadingovém prostředí je obtížné. Záležitosti jako správná volba kdy vytvářet vlastní thread a kdy použít Thread Pool, ošetření chyb, které vzniknou v jiném než hlavním threadu, korektní ukončení nebo přerušení běhu vlákna, správné a optimální používání zámků, synchronizace vláken, předejití nebo zotavení z deadlocku, používání a psaní thread safe objektů a thread safety obecně, synchronizační kontext, race conditions, nonblocking synchronizace, memory barriers a mnoho, mnoho dalšího. A to přitom také vůbec nemusím mluvit o paralelním programování a zpracování jako takovém (TPL, PLINQ, optimální rozdělení úlohy na jednotlivé podúlohy – tasky apod.), toto odvětví musí řešit další specifické výzvy a úkoly.
Samozřejmě na konkrétních scénářích záleží s kterými z výše uvedenými záležitostí se setkáme a jaké přístupy a postupy řešení jsou u nich nejvhodnější apod.
Sám rozhodně v žádném případě nejsem na toto odborník. Proto je dobré mít po ruce nějaký ten “výukový” materiál, který naopak od odborníků pochází. Jeden z nejlepších nebo možná úplně nejlepší z jakým jsem se setkal je “Threading in C#” od autora Joseph Albahari.
Materiál je k dispozici online:
http://www.albahari.com/threading
nebo případně i v PDF verzi:
http://www.albahari.info/threading/threading.pdf
Přestože se jedná vlastně o volné zveřejnění pouze dvou kapitol z knihy “C# 4.0 in a Nutshell” (konkrétně kapitoly 21 a 22), je tento materiál značně obsáhlý a obsahově velmi kvalitní (teď hodnotím originál, u českého překladu, to podle mého názoru už může být o něco horší, navíc pozor, že ten pochází ještě z verze knihy pouze pro C# 3.0).
Vřele ho tedy doporučuji k důkladnému nastudování, přečtení nebo alespoň nahlédnutí.