- 0 kr
Watch this product and we will notify you once it is back in stock.
After this workshop, you will get much better understanding of the various multithreading and asynchronous topics in the managed environment of the .NET runtime (in the context of C# programming language). As it is more and more popular, it is a crucial knowledge for every .NET developer. And while sometimes it may seems to be trivial, like just adding async/await keywords, the truth is much more complicated than that.
In this workshop we will go through many topics related to writing asynchronous and multithreaded code in C#. It will make attendees comfortable with such topics, knowing various common caveats they can meet during regular work.
This workshop is split into 50/50 between theory and practice. Every mentioned aspect is exercised practically - in the context of seeing things "live" by writing code or just solving some "theoretical puzzles" that help in understanding presented topics.
Any .NET developer should benefit from this workshop! Starting from the basics of .NET runtime, we go through various multithreading and asynchronous techniques available in C# that are useful for any .NET developer, with any experience.
Familiarity with .NET ecosystem, especially at least average knowledge of C# and Visual Studio. Feeling comfortable with C# on the level of non-trivial LINQ and lambda expressions is fine.
What you will learn
- Understand how threads and asynchronous code is handled by .NET runtime
- Learn how to write multithreaded code and know the concept of lock-free code
- Learn how to avoid common problems when using async
- Explore various APIs related to multithreading and async – especially Task-related
- Learn higher level APIs like Pipelines
- Learn some details about .NET runtime implementation
- Every aspect is covered both for .NET Framework and .NET Core
- Tools to diagnose and debug concurrency issues (like Concurrency Visualizer)
- Concurrent vs parallel
- I/O bound vs CPU bound
- Amdahl’s law
- Concurrency models
- Threads – foreground/background, Thread class API, cancellation, coordination (AutoResetEvent/ManualResetEvent)
- 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
- General concepts – state machine, task unwrapping
- Synchronous path optimization
- Sequential and concurrent processing – including non-trivial in incoming order processing
- SynchronizationContext and ExecutionContext
- The need of ValueTask
- Deep insight – Awaiter, IValueTaskSource
- Concurrent* classes
- Immutable collections
- Task Parallel Library Dataflow
- Reactive extensions
- Thread local storage
- Memory model - volatile, SIMD