Czas trwania
2-3 dni
Abstrakt
Szkolenie jest poświęcone tematyce programowania wielowątkowego, podczas którego, uczestnicy zostaną zaznajomieni z tematyką i problemami tworzenia kodu wykonującego się równolegle.
Zagadnienia
Architektura komputera |
Architektura pamięci i CPU |
Pamięć virtualna i pamięć fizyczna |
Cache różnego poziomy i ich oddziaływania na program współbieżny |
“Dziwne” zachowania kodu wykonywanego równolegle |
Programowanie wspołbieżne |
Działanie systemu Windows |
Procesy |
Wątki |
Scheduler zadań |
Rodzaje obciążeń – podział i przykłady |
IO |
CPU |
Bazowe typy .Neta wspierające programowanie współbieżne |
Poola wątków i jej aplikacje |
Synchronizacja między wątkami |
Mutex i lock |
ReaderWriterLock i ReaderWriterLockSlim |
Statyczny konstruktor i ThreadStatic |
[…] |
Synchronizacja między procesami |
Techniki i zagadnienia zaawansowane |
Lock-free |
Memory model .Neta |
Thread Parallel Library (TPL) – rozszerzenie biblioteki .Net |
Struktury wielowątkowe – zbiór prymitywów bezpiecznych wielowątkowo |
[…] |
Tasks – abstrakcja pozwalająca pisać bezpieczny kod dużo szybciej |
Task i Task |
Synchronizacja tasków |
Kontynuacje |
Klasa Parallel jako facada |
PLINQ – rozszerzenie LINQ o przetwarzanie równoległe |
Opcjonalnie wstęp do LINQ (czas w zależności od znajomości tematu przez grupę) |
Kiedy używać, a kiedy nie? |
[…] |
Wzorce równoległe |
Pętle równoległe |
Fork/Join |
Producer/Consumer |
Aggregacja równoległa |
Algorytm MapReduce |
Lazy-loading |
Współdzielenie stanu i problemy z tego wynikające |
Interfejs Użytkownika |
Jego budowa i wymagania dotyczące wątków |
Asynchroniczność i marshaling do UI |
Asynchroniczne controllery w ASP.Net MVC |
Jak zrobić prosty chat przy użyciu long pooling? |
Programowanie aspekty a UI |
Testowanie kodu równoległego |
Co da się wytestować, a czego nie? |
Reactive Extensions (Rx) – krótki wstęp |
Programowanie reaktywne |
Model push vs pull |
Async i await |
Wzorzec Asynchronous Programming Model – APM |
Event-based Asynchronous Pattern – EAP |
Async i await – rozszerzenie C# 4.5 pozwalające na pisanie asynchronicznych metod |
Iterator jako zastępnik w poprzednich wersjach .Neta |