Before Taking the Course
  • How to Ask Questions
  • Source Code
  • Join .NET Community of Students
  • Materials
Introduction
  • Outline
  • Main Concepts
  • Threads and Related Notions
  • Why async programming Important?
  • Hanging Application Demo
  • Problems Related to Multithreading
  • Conclusion
Thread API, Thread Pool, APM & EAP
  • Outline
  • Create Process
  • Starting a Thread
  • Cancelling a Thread
  • Coordinating Threads
  • Threading and COM
  • How Thread Pool Works
  • Worker and I/O Threads
  • I/O-Bound Operations
  • APM and EAP
  • Conclusion
Tasks
  • Outline
  • What is a Task? Starting a Task
  • Task States
  • Cancelling a Task
  • Chaining Tasks (Continuations)
  • Waiting for a Task
  • Creating I/O-Based Tasks
  • Error Handling
  • Global Exception Handling
  • Nested and Child Tasks
  • TaskCompletionSource
  • Conclusion
Async and Await
  • Outline
  • What is Async?
  • Async Method Return Types
  • Where "await" can be Used?
  • Exceptions in Async Code
  • Conclusion
Synchronization in Multithreaded Scenarios
  • Outline
  • Resources Shared by Threads
  • Atomic Operations and Thread Safety
  • Interlocked
  • Monitor (lock)
  • ReaderWriterLockSlim
  • Semaphore
  • SynchronizationContext
  • Deadlock
  • Conclusion
Signaling Constructs
  • Outline
  • Signaling with AutoResetEvent and ManuallyResetEventSlim
  • CountdownEvent and Barrier
  • Crossing Boundaries of a Process
  • Conclusion
Spinning
  • Outline
  • Blocking vs Spinning
  • SpinLock and SpinWait
  • Implementing our own spinner: UpdateableSpin
  • Conclusion
Concurrent Collections
  • Outline
  • Introduction
  • Implementing ImmutableStack and the Problem of Memory Pressure
  • Immutable Stack and ImmutableQueue
  • Immutable List
  • Immutable Sets
  • Immutable Dictionary
  • Builders in Immutable Collections
  • ConcurrentStack and ConcurrentQueue
  • ConcurrentBag
  • ConcurrentDictionary
  • Blocking Collection and Producer/Consumer Pattern
  • Conclusion
Parallel Programming
  • Outline
  • Introduction
  • Parallel Class
  • PLINQ
  • Cancelling Parallel and PLINQ
  • Conclusion
  • BONUS