Wszystkie kursy
Zaawansowany 7 lekcji · 64 min · 7 z ćwiczeniami

Wielowątkowość i async

Siedem lekcji od wątku i puli wątków do maszyny stanów, którą kompilator buduje za każdym await. Na końcu katalog zakleszczeń i wycieków oraz sposoby, żeby ich nie napisać.

0 z 7 lekcji
Zacznij kurs
  1. Wielowątkowość i programowanie równoległe w C# - Thread, ThreadPool, TPL, Parallel

    Trzy poziomy abstrakcji wielowątkowej w C# - klasa Thread, ThreadPool, Task Parallel Library z Parallel.For/ForEach i PLINQ. Synchronizacja (lock, Interlocked), pułapki race condition i deadlock oraz kiedy paralelizacja szkodzi bardziej niż pomaga. Dziesiąta część kursu C#.

    10 min quiz zadanie

  2. Synchronizacja wątków w C# - lock, Monitor, SemaphoreSlim, ReaderWriterLockSlim

    Race condition, sekcja krytyczna i sposoby ich obrony - lock z konwencjami Microsoftu, Monitor.TryEnter z timeoutem, SemaphoreSlim dla N wątków i kodu asynchronicznego, ReaderWriterLockSlim dla wzorca read-heavy. Jedenasta część kursu C#.

    11 min quiz zadanie

  3. Async/await w C# - Task, TAP, sync over async i Task.WhenAll

    Asynchroniczne programowanie w C# - słowa kluczowe async i await, model TAP, typ Task i Task<T>, antywzorzec sync over async (.Result/.Wait), Task.WhenAll dla równoległej kompozycji, wyjątki w async i niebezpieczeństwo async void. Dwunasta część kursu C#.

    11 min quiz zadanie

  4. Maszyna stanów async w C# - jak kompilator zmienia await na IAsyncStateMachine

    Co kompilator Roslyn robi z metodami async pod spodem - generowanie struktury implementującej IAsyncStateMachine, pola na zmienne lokalne, MoveNext jako serce logiki, AsyncTaskMethodBuilder kontrolujący Task. Praktyczne konsekwencje dla wydajności i debugowania. Trzynasta część kursu C#.

    8 min quiz zadanie

  5. Task kontra ValueTask w C# - kiedy struct zamiast referencji oszczędza GC

    Optymalizacja asynchroniczności dla hot path - ValueTask jako struct unika alokacji Task na stercie, gdy operacja kończy się synchronicznie. Cztery żelazne zasady bezpieczeństwa, trade-offy, kiedy używać a kiedy stać przy zwykłym Task. Czternasta część kursu C#.

    7 min quiz zadanie

  6. Zaawansowany async w C# - ConfigureAwait, CancellationToken, IAsyncEnumerable

    Trzy mechanizmy programisty Senior - ConfigureAwait(false) eliminujący niepotrzebne wracanie do kontekstu synchronizacji, CancellationToken jako kooperatywne anulowanie, IAsyncEnumerable jako strumień asynchroniczny z await foreach. Piętnasta część kursu C#.

    8 min quiz zadanie

  7. Deadlocki i wycieki pamięci w async C# - sync-over-async, fire-and-forget, CancellationToken.Register

    Trzy najgroźniejsze pułapki async w produkcji - klasyczny deadlock z .Result/.Wait(), połknięte wyjątki z fire-and-forget, wycieki pamięci z CancellationToken.Register. Diagnostyka i wzorce obronne. Szesnasta i ostatnia część kursu C# o asynchroniczności.

    9 min quiz zadanie

Egzamin z całego kursu

Ten kurs nie ma jeszcze egzaminu. Lekcje mają własne quizy - przejdź je po kolei, a egzamin pojawi się tutaj, gdy powstanie.