Programowanie wielowątkowe i asynchroniczne w C#
Szybko i niezawodnie
Czego się nauczysz
- Zrozumiesz podstawy i zaawansowane techniki wielowątkowości
- Nauczysz się korzystać z najnowszych mechanizmów
- Poprawisz wydajność swoich aplikacji i zapewnisz im lepszą responsywność
Zaawansowany
3 dni
Stacjonarnie/zdalnie
Certyfiktat ukończenia
Opis szkolenia
Współczesne aplikacje wymagają wydajnego przetwarzania danych, optymalnego zarządzania zasobami i responsywności. To szkolenie pokaże Ci, jak opanować wielowątkowość i asynchroniczność w C# w praktyczny i przystępny sposób
Program szkolenia
- Podstawowe mechanizmy wielowątkowości
- Wątek (Thread)
- Pula wątków (ThreadPool)
- Programowanie asynchroniczne
- Zadanie (Task)
- Anulowanie zadań (CancellationToken)
- Wyświetlanie postępu (Progress)
- Synchronizacja zadań
- Optymalizacja (ConfigureAwait)
- Lżejsza alternatywa (ValueTask)
- Asynchroniczne iterowanie po kolekcjach (IAsyncEnumerable)
- Wzorzec AsyncLazy
- Kolekcje wielowątkowe
- Bezpieczny słownik (ConcurrentDictionary)
- Bezpieczna kolejka (ConcurrentQueue)
- Bezpieczny stos (ConcurrentStack)
- Kolekcja (ConcurrentBag)
- Buforująca kolekcja dla wielowątkowości (BlockingCollection)
- Synchronizacja wątków
- Blokowanie dostępu do zmiennych (Interlocked)
- Blokowanie dostępu do sekcji kodu (lock)
- Zaawansowane zarządzanie blokadami (Monitor)
- Ograniczanie liczby współbieżnych operacji (Semaphore i SemaphoreSlim)
- Powiadamianie wątków o stanie (AutoResetEvent i ManualResetEvent)
- Czekanie na zakończenie określonej liczby operacji (CountdownEvent)
- Synchronizacja etapów wykonywania wątków (Barrier)
- Synchronizacja międzyprocesowa (Mutex)
- Kanały i przepływ danych
- Przesyłanie danych między wątkami z użyciem kanału (Channel)
- Kanał bez limitu pojemności (Unbounded Channel)
- Kanał z ograniczoną pojemnościa (Bounded Channel)
- Zamykanie kanału i obsługa końca strumienia
- Tryby pracy kanału
- Porównanie z BlockingCollection i kolejkami (ConcurrentQueue)
- Przykłady zastosowań
- Przetwarzanie równoległe (Parallel Programming)
- Równoległe wykonywanie pętli (Parallel.For)
- Równoległa iteracja (Parallel.ForEach)
- Równoczesne uruchamianie metod (Parallel.Invoke)
- Równoległe wykonywanie pętli operacji asynchronicznych (Parallel.ForAsync)
- Równoległe iteracje operacji asynchronicznych (Parallel.ForEachAsync)
- Równoległe zapytania LINQ (Parallel LINQ)
- Wielowątkowość w ASP.NET
- Tworzenie usług działających w tle (BackgroundService)
- Asynchroniczne zwalnianie zasobów (IAsyncDisposable)
- Bezpieczeństwo wątkowe
- Zasady projektowania thread-safe kodu
- Obiekty niezmienne (Immutable objects)
- Testowanie kodu wielowątkowego
- Testowanie metod asynchronicznych
- Symulowanie problemów współbieżności
- Praktyczne przykłady
- Kolejka zadań w tle
- Przetwarzanie dużych zbiorów danych
- Przetwarzanie strumieni IoT
- Reagowanie na zdarzenia UI
Prowadzący
Marcin Sulecki
Od ponad 30 lat projektuję i rozwijam systemy w .NET, m.in. dla logistyki i monitoringu pojazdów. Na szkoleniach pokazuję to, co sprawdza się w prawdziwych projektach, a na co dzień uczę też studentów Politechniki Warszawskiej.
30+
Lat doświadczenia
450+
Przeprowadzonych szkoleń
3000+
Uczestników
100
Godzin konsultacji
Skontaktuj się z nami
ul. Erazma Ciołka 10 lok. 328
01-402 Warszawa