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

chevron-down
  • 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

Sulmar ul. Erazma Ciołka 10 lok. 328, 01-402 Warszawa

NIP 953-120-45-91 REGON 092599270

+48 609 851 649

marcin.sulecki@sulmar.pl