Course Overview

Mastering .NET Threading teaches how to use threads effectively to build responsive client apps, scalable server apps, and how to improve the performance of these apps by effectively leveraging the computer's CPUs. The concepts presented are appropriate for any programming language and operating system, but the class focuses specifically on Windows and the .NET Framework.

This class shows how to architect software to best leverage a computer's resources while providing your users the best performing, most responsive, and scalable software possible.

  • Understand thread fundamentals and their costs
  • Learn how to properly handle compute-bound and I/O-bound operations
  • Appreciate thread synchronization and how to use it properly

Key Learning Areas

  • Introduces the concept of a thread, why the concept was introduced into Windows, the benefits of threads, the overhead of threads, and other thread properties.
  • How to identify compute-bound operations, and how to leverage multiple CPUs so that your operation scales thereby improving your application's performance.
  • How to identify I/O-bound operations, and how to execute the operations asynchronously thereby reducing the resources required by an application while increasing performance.
  • Learn how the mechanisms offered by the computer's CPUs helps to coordinate activities by multiple threads.
  • Discusses how the primitive mechanisms are built upon to provide the primitives offered by Windows and exposed by the .NET Framework to application and component developers.
  • Defines terms, such as starvation, spinning, blocking, deadlock, livelock, lazy creation, thread ownership, recursion, etc., that are used to distinguish locks from one another.
  • How locks we use everyday leverage the best features of the user-mode & kernel-mode constructs.

Course Outline

  • Task Basics
  • Performing I/O-Bound Asynchronous Operations
  • Parallel Programming
  • Primitive Thread Synchronization Constructs
  • Hybrid Thread Synchronization Constructs
  • Reactive Framework Extensions (Rx)
  • Thread Basics
  • Performing Compute-Bound Asynchronous Operations

Who Benefits

Performance, responsiveness, and scalability are the keys to building software your users love and this class is all about endowing your server and client applications with these attributes.

Prerequisites

Persons who attend Mastering .NET Threading should have experience with C# or Visual Basic .NET.