Multithreading and Parallel Programming in C#
4.3 (278 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
2,097 students enrolled

Multithreading and Parallel Programming in C#

Overcome multithreading and asynchronous programming in C# problems & improve performance by parallel computing in C#
4.3 (278 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
2,097 students enrolled
Created by Engineer Spock
Last updated 10/2019
English
English [Auto-generated]
Current price: $48.99 Original price: $69.99 Discount: 30% off
5 hours left at this price!
30-Day Money-Back Guarantee
This course includes
  • 7 hours on-demand video
  • 3 articles
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Training 5 or more people?

Get your team access to 4,000+ top Udemy courses anytime, anywhere.

Try Udemy for Business
What you'll learn
  • Be able to use a full power of TPL (task parallel library) by using Tasks
  • Understand the low-level of Threads
  • Understand all the basic concepts such as "Thread", "Process"; difference between "asynchrony", "concurrency", "multithreading", and "parallel computing"
  • Use the full power of synchronization constructs such as Monitor (lock), Interlocked, ReaderWriterLockSlim, Semaphore, SynchronizationContext
  • Use the full power of signaling constructs such as AutoResetEvent and ManualResetEventSlim, CountdownEvent and Barrier, Mutex
  • Use spinners where appropriate: SpinLock, SpinWait
  • Understand and use Immutable and Concurrent Collections
  • Harness the power of parallel computing by using PFX components: Parallel class and PLINQ
Course content
Expand all 80 lectures 07:11:28
+ Before Taking the Course
4 lectures 01:13
How to Ask Questions
00:22
Source Code
00:01
Join .NET Community of Students
00:03
+ Introduction
7 lectures 30:21
Main Concepts
06:14
Threads and Related Notions
09:01
Why async programming Important?
02:26
Hanging Application Demo
06:03
Problems Related to Multithreading
01:56
Conclusion
02:47
+ Thread API, Thread Pool, APM & EAP
11 lectures 54:09
Outline
01:19
Create Process
09:07
Starting a Thread
06:32
Cancelling a Thread
08:09
Coordinating Threads
09:01
Threading and COM
02:09
How Thread Pool Works
02:14
Worker and I/O Threads
06:09
I/O-Bound Operations
04:27
APM and EAP
03:42
Conclusion
01:20
+ Tasks
12 lectures 01:33:16
Outline
01:00
Task States
03:54
Cancelling a Task
15:54
Chaining Tasks (Continuations)
10:07
Waiting for a Task
09:22
Creating I/O-Based Tasks
12:51
Error Handling
10:25
Global Exception Handling
07:07
Nested and Child Tasks
05:06
TaskCompletionSource
02:43
Conclusion
01:59
+ Async and Await
6 lectures 28:58
Outline
01:08
What is Async?
08:20
Async Method Return Types
03:06
Where "await" can be Used?
04:02
Exceptions in Async Code
10:00
Conclusion
02:22
+ Synchronization in Multithreaded Scenarios
10 lectures 01:06:20
Outline
01:33
Resources Shared by Threads
06:02
Atomic Operations and Thread Safety
04:44
Interlocked
10:03
ReaderWriterLockSlim
09:07
Semaphore
04:17
SynchronizationContext
08:56
Deadlock
04:44
Conclusion
03:29
+ Signaling Constructs
5 lectures 29:54
Outline
01:51
Signaling with AutoResetEvent and ManuallyResetEventSlim
13:14
CountdownEvent and Barrier
08:28
Crossing Boundaries of a Process
04:54
Conclusion
01:27
+ Spinning
5 lectures 31:23
Outline
00:56
Blocking vs Spinning
05:01
SpinLock and SpinWait
07:26
Implementing our own spinner: UpdateableSpin
16:53
Conclusion
01:07
+ Concurrent Collections
13 lectures 01:06:18
Outline
01:35
Introduction
04:01
Implementing ImmutableStack and the Problem of Memory Pressure
06:30
Immutable Stack and ImmutableQueue
09:50
Immutable List
04:35
Immutable Sets
05:31
Immutable Dictionary
04:28
Builders in Immutable Collections
04:13
ConcurrentStack and ConcurrentQueue
05:49
ConcurrentBag
04:08
ConcurrentDictionary
07:52
Blocking Collection and Producer/Consumer Pattern
05:36
Conclusion
02:10
+ Parallel Programming
7 lectures 29:36
Outline
01:05
Introduction
04:26
Parallel Class
06:25
PLINQ
05:17
Cancelling Parallel and PLINQ
10:02
Conclusion
01:03
BONUS
01:18
Requirements
  • Good understanding of C#
Description

For the last two decades, computers became faster by increasing the number of CPU cores. However, the fact of having more cores itself doesn’t make a computer drastically faster if those cores are not used by software properly. We, as software developers, should know how to write asynchronous and parallel executing code to make our applications faster and more responsive.

This course is all about developing more responsive and fast programs. Multithreading and Parallel Computing are topics for those who already have some experience in programming, otherwise, you may face difficulties with understanding the content. Anyway, this course covers:

  • Theoretical foundations of asynchronous programming: main concepts, processes, threads and so on

  • Low-level Thread API, APM, and EAP

  • Task Parallel Library (TPL) including starting tasks, canceling tasks, chaining tasks, waiting for tasks, IO-based tasks, exceptions handling and other

  • Async and Await feature of C#

  • Synchronization including atomicity, Interlocked, Monitor (lock), ReaderWriterLockSlim, Semaphore, SynchronizationContext, and Mutex

  • Signaling constructs such as AutoResetEvent and ManualResetEventSlim, CountdownEvent and Barrier

  • Spinning including SpinWait, SpinLock and our own UpdateableSpin

  • ConcurrentCollections including ImmutableStack, ImmutableQueue, ImmutableList, Immutable Sets, ImmutableDictionary, ConcurrentStack, ConcurrentQueue, ConcurrentBag, BlockingCollection

  • Parallel Programming including Parallel class and PLINQ

Enroll and start learning the foundations of multithreading and parallel computing in .NET.

Who this course is for:
  • Any C# developer who wants to learn about multithreading and parallel computing in C#
  • Any C# developer who wants to have a good reminder (about multithreading-related stuff) at hand