Async Expert (PL)
Async Expert to 10 solidnych tygodni, w których przeprowadzimy Cię od podstaw asynchroniczności aż po synchronizację i kolekcje współbieżne.
Wprowadzenie
Podstawy BenchmarkDotNet
Demo: sharplab.io
Demo: ConcurrencyVisualizer
Demo: Parallel Stacks/Tasks
Zadanie domowe
Threads
ThreadPool
Demo: Używanie ThreadPool z różnymi API
Demo: Używanie ThreadPool.BindHandle
Zadanie domowe
Task API
Podstawy async-await (oraz dema)
Async eliding
ValueTask
Task API i async
Zadanie domowe
Wykonanie, konteksty, scheduler
Sync vs async
Fire and forget
TaskCompletionSource
Awaitables
Wartości lokalne
Zadanie domowe
Agregacja wykonania Tasków
IAsyncDiposable
IAsyncEnumerable
Demo: gRPC oraz IAsyncEnumerable
Demo: New SQL client
Demo: Implementacja timeoutu z WhenAny i WhenAll
Zadanie domowe
Hardware
volatile
Demo: Używanie epok w ConcurrentQueue
Interlocked
Demo: Prosta pula z Interlocked.Exchange
Bariery i alignment
Demo: Rezerwacja zakresu bufora w Aeron.NET z Interlocked.CompareExchange
Zadanie domowe
Exclusive locking - część 1
Demo: dekompilacja locka
Exclusive locking - część 2
Demo: Nieblokujące użycie Monitor.TryEnter
Exclusive locking - część 3
Non-exclusive locking - część 1
Demo: Limitowanie obiektów Task z SemaphoreSlim
Non-exclusive locking - część 2
Demo: Budowa własnej puli obiektów string z ReaderWriterLock
Non-exclusive locking - część 3
Sygnały
Asynchroniczne mechanizmy wykluczania - część 1
Demo: Implementacja AsyncLock
Asynchroniczne mechanizmy wykluczania - część 2
Zadanie domowe
Podstawy
BlockingCollection
ConcurrentStack
Demo: Cache obiektów z ConcurrentStack
ConcurrentQueue
Demo: Pula pamięci w Kestrel ASP.NET z ConcurrentQueue
ConcurrentDictionary
Demo: Efektywny cache z użyciem ConcurrentDictionary.GetOrAdd
ConcurrentBag
Zadanie domowe
Wprowadzenie
Pipelines
Demo: TcpEcho
Channels
Demo: Użycie Channel
Zadanie domowe
IValueTaskSource z Interlocked.CompareExchange
IValueTaskSource bazujący na tablicy i tokenie
ValueTask i używanie puli w .NET 5
ManualResetValueTaskSourceCore
False Sharing
Demo: Hostowanie serisów z IHostBuilder, IHostedService opartych o ConcurrentQueue
F# async vs C# async
What's new in CancellationTokens for .NET 5 and beyond
Podsumowanie kursu
Marc Gravell, webinar nr 1
Daniel Marbach, webinar nr 2
Steve Cleary, webinar nr 3
Daniel Marbach, webinar nr 4
Marc Gravell, webinar nr 5
Steve Cleary, webinar nr 6
Daniel Marbach, webinar nr 7