Multi-threading is the ability of a computer or a program to perform work concurrently or asynchronously by utilizing multiple concurrent streams of execution (generally referred to as threads).

- Wiki
6 articles, 3 books. Go to books ↓

Process is an isolation between Applications to secure Application and its data. It is also a physical separation of memory and resources. A thread is an entity which performs all the actions inside a process.

The ConcurrentDictionary provides the most efficient (and safest) way to shared named values between asynchronous processes with several powerful methods. But the best advice might be to avoid ever needing them.

In this series, I’m going to be elucidating some common errors C# programmers make when working with multithreaded systems.

In .NET the iterator pattern is exposed via an IEnumerator and there is some syntactic sugar so that you can create an iterator method using yield return. There is also syntactic sugar surrounding the consumption of iterators via foreach. This almost completely hides the complexities of IEnumerator implementations.

Can database-style sharding improve the performance of a multi-threaded C# application? This tutorial talks about the performance bottlenecks in sophisticated C# concurrency operations and how sharding can solve these issues.