- Totalt 0 kr
Asynkron och flertrådad C#
Lägg till en bevakning så meddelar vi dig så snart varan är i lager igen.
Asynkron och flertrådad C#
Efter kursen kommer du ha en mycket bättre förståelse för de olika sätten att jobba flertrådat och asynkront i .NET-miljön (med C# som programmeringsspråk). Eftersom detta arbetssätt är väldigt populärt är denna kunskap ett måste för varje .NET-utvecklare. Trots att det ibland kan upplevas som trivialt att slänga in async/await i koden är den bakomliggande sanningen mycket mer komplicerad än så.
Vi tar upp många ämnen relaterade till att skriva asynkron och flertrådad kod i C#. Du kommer bli mer bekväma i dessa ämnen och kunna undvika vanliga fällor i sitt fortsatta arbete. Workshopen är uppdelad 50/50 mellan teori och praktik. Varje aspekt som omnämns kommer att provas på i praktiken - antingen genom att skriva kod eller lösa teoretiska gåtor som hjälp för att förstå det som presenterats.
Målgrupp
Alla .NET-utvecklare har nytta av denna workshop! Med början i grundläggande aspekter av .NET runtime, går vi igenom olika flertrådnings- och asynkrona tekniker som finns att tillgå i C#, på ett användbart sätt för alla .NET-utvecklare, oavsett erfarenhet
Förkunskaper
Du är bekant med .NET-ekosystemet. Åtminstone medelkunskap om C# och Visual Studio. Du känner dig bekväm med C# på nivån icke-trivial LINQ och lambdauttryck.
Vad du kommer lära dig
- Förstå hur trådar och asynkron kod hanteras av .NET runtime
- Lär dig hur man skriver flertrådad och asynkron kod och förstå konceptet låsfri kod
- Lär dig hur man undviker vanliga problem när man använder async
- Utforska olika API:n relaterade till flertrådat och asynkront - särskilt relaterat till Task-begreppet
- Lär dig högnivå-API:n som Pipelines
- Lär dig några detaljer om implementationen av .NET runtime
- Varje aspekt täcks för såväl .NET Framework som .NET Core
- Verktyg för att diagnosticera och debugga samtidighetsproblem (som Concurrency Visualizer)
Introduction
- Concurrent vs parallel
- I/O bound vs CPU bound
- Amdahl’s law
- Concurrency models
- Tooling
Low-level API
- Threads – foreground/background, Thread class API, cancellation, coordination (AutoResetEvent/ManualResetEvent)
- ThreadPool
- Thread synchronization – Monitor, lock, lock striping, Semaphore, reader/writer locks, Interlocked API, SpinWait/SpinLock
- IIS & ASP.NET
Asynchronous Programming Model (APM)
- IAsyncResult and Begin/End concept
Event Asynchronous Pattern (EAP)
- WebClient and BackgroundWorker examples
Task based Asynchronous Pattern (TAP)
- Task & Task API, continuation, cancellation
- Tasks combination – WaitAll, WaitAny
- TaskScheduler
Async/await
- General concepts – state machine, task unwrapping
- Synchronous path optimization
- Sequential and concurrent processing – including non-trivial in incoming order processing
- Cancellation
- TaskCompletionSource
- SynchronizationContext and ExecutionContext
- The need of ValueTask
- Deep insight – Awaiter, IValueTaskSource
Concurrent collections
- Concurrent* classes
- BlockingCollection
- Immutable collections
Higher APIs
- Task Parallel Library Dataflow
- PLINQ
- IAsyncEnumerable
- Pipelines
- Reactive extensions
Advanced topics
- Thread local storage
- Memory model - volatile, SIMD