Škola hrou, tak by se dal nazvat interaktivní kurz paralelního programování, jehož úkoly jsou syntakticky napsány v C#, ale pochopí je i javista, delphista nebo céčkař. Na rozdíl od ostatních kurzů není cílem napsat funkční kousek kódu, ale dokázat, že stávající kousek je napsán děravě a existuje aspoň jedna konstelace, při které dojde k uvíznuzí, vstoupení dvou vláken do kritické sekce nebo jakékoliv jiné botě. Jak? Zahrajete si na mocný plánovač (
scheduler) a pokusíte se tu botu najít!
Začíná se od primitivních úkolů a postupuje ke složitejším, sofistikovanějším konceptům synchronizace. Např. úvodní druhá cvičná úloha "
Non-Atomic Instructions" má za cíl jednoduše nechat obě vlákna synchronně vstoupit do kritické sekce, pěkně jedno po druhém, pokud víme, že proměnná
a=0.
Kód:
Thread 0 Thread 0
-------- --------
a = a + 1; a = a + 1; // neatomická operace ...
( temp = a + 1; ( temp = a + 1; // ... a její dvě atomické instrukce
a = temp; ) a = temp; )
if (a == 1) { if (a == 1) {
critical_section(); critical_section(); // obě vlákna musí synchronně projít kritickou sekcí
} }
A proč pohádka? Musíte porazit zlého Paralelního čaroděje (zlejšího než
čaroděj Zaks...), sídlícího v Deadlockovém císařství, jehož brány se právě otevřely a poslušní čarodějovi služebníci se na vás řítí!
Sync a enjoy