Chapter Overview

Get an idea of what we'll cover in this chapter.

Concurrency and parallelism refer to the ability to run code in separate threads of execution. More specifically, concurrency is the ability to run threads in the background, and parallelism is the ability to run threads simultaneously in separate cores of a processor. The run-time library, along with the host operating system, will choose between concurrent and parallel execution models for a given thread on a given hardware environment.

In a modern multi-tasking operating system, the main() function already represents a thread of execution. When a new thread is started, it's said to be spawned by an existing thread. A group of threads may be called a swarm. In the C++ standard library, the std::thread class provides the basic unit of threaded execution. Other classes build upon thread to provide locks, mutexes, and other concurrency patterns. Depending on system architecture, execution threads may run concurrently on one processor, or in parallel on separate cores.

In this chapter, we will cover these tools and more in the following recipes:

  • Sleep for a specific amount of time

  • Use std::thread for concurrency

  • Use std::async for concurrency

  • Run STL algorithms in parallel with execution policies

  • Share data safely with mutex and locks

  • Share flags and values with std::atomic

  • Initialize threads with std::call_once

  • Use std::condition_variable to resolve the producer-consumer problem

  • Implement multiple producers and consumers

Create a free account to view this lesson.

By signing up, you agree to Educative's Terms of Service and Privacy Policy