Introduction
Programming requires understanding and knowledge of basic data structures and algorithms. To choose the best-suited data structure for a concurrent situation, a programmer has to know about many things, such as algorithm time, space complexity, and the big O notation. In different, well-known scenarios, we always know which data structures are more efficient.
For concurrent computations, we need to have appropriate data structures. These data structures have to be scalable, avoid locks when possible, and at the same time provide thread-safe access. .NET Framework, since version 4, has the System.Collections.Concurrent
namespace with several data structures in it. In this chapter, we will cover several data structures and show you very simple examples of how to use them.
Let's start with ConcurrentQueue
. This collection uses atomic Compare and Swap (CAS) operations, which allow us to safely exchange values of two variables, and SpinWait
to ensure thread safety. It implements...