Parallel Programming and TPL Dataflow


DNParallel - Version:3
Description
In this course, you will learn how to use the new .NET 4+ features to parallelize existing code, to utilize data parallelism, to create and manage tasks, and to synchronize access to data using concurrent collections. You will gain deeper understanding on Task, Async/Await, TPL Dataflow. The course will discuss best practice, api design and guidelines.
Intended audience
.NET developers with at least 1 year of C# programming experience. Cursory familiarity with operating system concepts such as multithreading and synchronization is recommended.
Expand All
  • Parallel from start
    • Intoduction
      • History
      • Why Do We Need Parallelism?
      • Threads
      • The Downside of Parallelism
      • .NET 1
      • Thread
      • The ThreadPool
      • Thread vs Thread Pool
    • Sync
      • Amdahl’s Law
      • How to Parallelize a Unit of Work?
      • Stack and Heap
      • Thread safety
      • Critical Sections (Lock)
      • Lock vs. Interlocked
      • CountdownEvent
      • Quiz
    • Collections
      • Concurrent Collections
      • ConcurrentQueue<T>
      • ConcurrentStack<T>
      • ConcurrentBag<T>
      • IProducerConsumerCollection<T>
      • BlockingCollection<T>
      • ConcurrentDictionary
      • Other APIs
    • Task
      • Explicit Parallelism
      • Task == Data Structure
      • Task<T>
      • Task as data structure
      • Semantical Task
      • Scheduling Task using Factory
      • Long-Running Tasks
      • Thread Safety
    • Continuation
      • A better callback API
      • Tasks vs. APM
      • Continuations
      • WhenAll, WhenAny
      • Conditional Continuations
      • Continuation Configurations
    • Async
      • Is it the best we can do?
      • C# 5: async syntax
      • Chaining await
      • Simultaneous await
      • When All
      • Using
    • Loops
      • Implicit Parallelism
      • Async Loop Strategies
      • Await loop
      • Await LINQ Pattern
    • IOCP
      • IO operations
      • Service call without IOCP
      • IOCP
      • Async Download
      • TAP: adoption
      • Task base WCF proxy / server side by default
      • Task base Web API
    • Diagnostic
      • Debugger Parallel Watch window
      • Parallel Stacks
    • Exceptions
      • Handling Exception
      • Exception flow control
      • AggregateException
      • Catching aggregate exceptions
      • Read-able exceptions
    • Cancellation
      • Cancellation
      • Polling for Cancellation
      • Cancellation and Tasks
      • Timeouts and Cancellation
    • Summary
  • TPL Dataflow
    • What is TPL Dataflow?
      • The agent base concept
      • Evolution
      • Goals
    • Getting started
      • Namespace
      • NuGet
    • Contract
      • Source API
      • Target API
      • Block API
      • Push vs. Pool
    • Blocks
      • Blocks categories
    • Action block
      • Structure
      • Functionality
      • Throttling
    • Buffer Block
      • Structure
      • Functionality
      • Push and Pool
      • Bounded capacity
    • Broadcast Block
      • Structure
      • functionality
      • What makes it different than Buffer Block?
    • Transform Block
      • Structure
      • Functionality
    • Transform Many Block
      • Structure
      • Functionality
    • TPL Dataflow and Async
      • Using async / await with TDF
      • Processing I/O operations
    • Performance tuning
      • MaxMessagesPerTask
    • Case Study: Web Crawler
    • Appendixs:
      • Batch Block
      • Join Block
      • Greediness
      • Greediness and built-in blocks
      • BatchedJoinBlock
      • WriteOnceBlock
      • Rx vs. TDF
    • Summary
  • You will gain deeper understanding on Task, Async/Await, Tpl Dataflow.
  • The course will discuss best practice, api design and guidelines
  • Understand TPL Dataflow blocks and performance tuning