Skip to content

Concurrency books — C++

All book lists · Concepts

Modern Parallel Programming with C++ and Assembly Language: X86 SIMD Development Using AVX, AVX2, and AVX-512

Daniel Kusswurm · 1st edition · Apress · 2022
dedicated to concurrency · on the shelf · publisher ↗ · example code ↗

Chapters
  • 1 SIMD Fundamentals
  • 2 AVX C++ Programming: Part 1
  • 3 AVX C++ Programming: Part 2
  • 4 AVX2 C++ Programming: Part 1
  • 5 AVX2 C++ Programming: Part 2
  • 6 AVX2 C++ Programming: Part 3
  • 7 AVX-512 C++ Programming: Part 1
  • 8 AVX-512 C++ Programming: Part 2
  • 9 Supplemental C++ SIMD Programming
  • 10 X86-64 Processor Architecture
  • 11 Core Assembly Language Programming: Part 1
  • 12 Core Assembly Language Programming: Part 2
  • 13 AVX Assembly Language Programming: Part 1
  • 14 AVX Assembly Language Programming: Part 2
  • 15 AVX2 Assembly Language Programming: Part 1
  • 16 AVX2 Assembly Language Programming: Part 2
  • 17 AVX-512 Assembly Language Programming: Part 1
  • 18 AVX-512 Assembly Language Programming: Part 2
  • 19 SIMD Usage and Optimization Guidelines

Cited on: SIMD

Data Parallel C++: Mastering DPC++ for Programming of Heterogeneous Systems using C++ and SYCL

James Reinders, Ben Ashbaugh, James Brodman, Michael Kinsner, John Pennycook, Xinmin Tian · 1st edition · Apress · 2021
dedicated to concurrency · on the shelf · publisher ↗ · example code ↗

Chapters
  • 1 Introduction
  • 2 Where Code Executes
  • 3 Data Management
  • 4 Expressing Parallelism
  • 5 Error Handling
  • 6 Unified Shared Memory
  • 7 Buffers
  • 8 Scheduling Kernels and Data Movement
  • 9 Communication and Synchronization
  • 10 Defining Kernels
  • 11 Vectors
  • 12 Device Information
  • 13 Practical Tips
  • 14 Common Parallel Patterns
  • 15 Programming for GPUs
  • 16 Programming for CPUs
  • 17 Programming for FPGAs
  • 18 Libraries
  • 19 Memory Model and Atomics

Cited on: Barrier, Data parallelism, GPU computing, SIMD

C++ Concurrency in Action

Anthony Williams · 2nd edition · Manning Publications · 2019
dedicated to concurrency · on the shelf · publisher ↗ · example code ↗

Chapters
  • 1 Hello, world of concurrency in C++!
  • 2 Managing threads
  • 3 Sharing data between threads
  • 4 Synchronizing concurrent operations
  • 5 The C++ memory model and operations on atomic types
  • 6 Designing lock-based concurrent data structures
  • 7 Designing lock-free concurrent data structures
  • 8 Designing concurrent code
  • 9 Advanced thread management
  • 10 Parallel algorithms
  • 11 Testing and debugging multithreaded applications
  • Brief comparison of concurrency libraries
  • C A message-passing framework and complete ATM example
  • D C++ Thread Library reference

Cited on: Atomic variable, Concurrency, Concurrent data structures, Data parallelism, Debugging concurrent programs, Future and promise, Lock-free, Oversubscription, Parallel algorithms, Profiling concurrent programs, Shared memory, Thread, Thread pool and executor, Timeout, Weak memory models and reordering

Concurrency with Modern C++

Rainer Grimm · Leanpub version of 2019-03-19 edition · Leanpub (self-published) · 2019
dedicated to concurrency · on the shelf · publisher ↗

Chapters
  • 1 Concurrency with Modern C++
  • 2 Memory Model
  • 3 Multithreading
  • 4 Parallel Algorithms of the Standard Template Library
  • 5 Case Studies
  • 6 The Future: C++20/23
  • 7 Patterns and Best Practices
  • 8 Synchronisation Patterns
  • 9 Concurrent Architecture
  • 10 Best Practices
  • 11 Lock-Based Data Structures
  • 12 Lock-Free Data Structures
  • 13 Challenges
  • 14 The Time Library
  • 15 CppMem - An Overview

Cited on: ABA problem, Barrier, Concurrent data structures, Condition variable, Coroutine, Data race, Deadlock, False sharing, Join, Latch, Monitor, Parallel algorithms, Race condition, Task (async), Thread safety, Thread-local storage, Transactional memory

Pro TBB: C++ Parallel Programming with Threading Building Blocks

Michael Voss, Rafael Asenjo, James Reinders · 1st edition · Apress · 2019
dedicated to concurrency · on the shelf · publisher ↗ · example code ↗

Chapters
  • 1 Jumping Right In: “Hello, TBB!”
  • 2 Generic Parallel Algorithms
  • 3 Flow Graphs
  • 4 TBB and the Parallel Algorithms of the C++ Standard Template Library
  • 5 Synchronization: Why and How to Avoid It
  • 6 Data Structures for Concurrency
  • 7 Scalable Memory Allocation
  • 8 Mapping Parallel Patterns to TBB
  • 9 The Pillars of Composability
  • 10 Using Tasks to Create Your Own Algorithms
  • 11 Controlling the Number of Threads Used for Execution
  • 12 Using Work Isolation for Correctness and Performance
  • 13 Creating Thread-to-Core and Task-to-Thread Affinity
  • 14 Using Task Priorities
  • 15 Cancellation and Exception Handling
  • 16 Tuning TBB Algorithms: Granularity, Locality, Parallelism, and Determinism
  • 17 Flow Graphs: Beyond the Basics
  • 18 Beef Up Flow Graphs with Async Nodes
  • 19 Flow Graphs on Steroids: OpenCL Nodes
  • 20 TBB on NUMA Architectures

Cited on: Cancellation, Cooperative scheduling, Dataflow programming, Fork-join, GPU computing, Granularity, NUMA, Oversubscription, Parallel algorithms, Pipeline, Preemptive scheduling, Scheduler, SIMD, Task parallelism, Thread confinement

C++ Reactive Programming: Design concurrent and asynchronous applications using the RxCpp library and Modern C++17

Praseed Pai, Peter Abraham · 1st edition · Packt Publishing · 2018
dedicated to concurrency · on the shelf · example code ↗

Chapters
  • 1 Reactive Programming Model – Overview and History
  • 2 A Tour of Modern C++ and its Key Idioms
  • 3 Language-Level Concurrency and Parallelism in C++
  • 4 Asynchronous and Lock-Free Programming in C++
  • 5 Introduction to Observables
  • 6 Introduction to Event Stream Programming Using C++
  • 7 Introduction to Data Flow Computation and the RxCpp Library
  • 8 RxCpp – the Key Elements
  • 9 Reactive GUI Programming Using Qt/C++
  • 10 Creating Custom Operators in RxCpp
  • 11 Design Patterns and Idioms for C++ Rx Programming
  • 12 Reactive Microservices Using C++
  • 13 Advanced Streams and Handling Errors

Cited on: Async stream, Event-driven programming, Publish-subscribe and broadcast, Reactive programming, Task (async), UI thread

Mastering C++ Multithreading: Write robust, concurrent, and parallel applications

Maya Posch · 1st edition · Packt Publishing · 2017
dedicated to concurrency · on the shelf · example code ↗

Chapters
  • 1 Revisiting Multithreading
  • 2 Multithreading Implementation on the Processor and OS
  • 3 C++ Multithreading APIs
  • 4 Thread Synchronization and Communication
  • 5 Native C++ Threads and Primitives
  • 6 Debugging Multithreaded Code
  • 7 Best Practices
  • 8 Atomic Operations - Working with the Hardware
  • 9 Multithreading with Distributed Computing
  • 10 Multithreading with GPGPU

Cited on: Data race, Debugging concurrent programs, GPU computing, MPI, Mutual exclusion, Process

Parallel Programming with Intel Parallel Studio XE

Stephen Blair-Chappell, Andrew Stokes · 1st edition · John Wiley & Sons (Wrox) · 2012
dedicated to concurrency · on the shelf · publisher ↗

Chapters
  • 1 Parallelism Today
  • 2 An Overview of Parallel Studio XE
  • 3 Parallel Studio XE for the Impatient
  • 4 Producing Optimized Code
  • 5 Writing Secure Code
  • 6 Where to Parallelize
  • 7 Implementing Parallelism
  • 8 Checking for Errors
  • 9 Tuning Parallel Applications
  • 10 Parallel Advisor–Driven Design
  • 11 Debugging Parallel Applications
  • 12 Event-Based Analysis with VTune Amplifier XE
  • 13 The World’s First Sudoku “Thirty-Niner”
  • 14 Nine Tips to Parallel-Programming Heaven
  • 15 Parallel Track Fitting in the CERN Collider
  • 16 Parallelizing Legacy Code

Cited on: Data race, OpenMP, Parallelism, SIMD

Multi-Threaded Programming in C++

Mark Walmsley · 1st edition · Springer-Verlag London · 2000
dedicated to concurrency · on the shelf · publisher ↗

Chapters
  • 1 Introduction
  • 2 Threads
  • 3 Mutexes
  • 4 Events
  • 5 Semaphores
  • 6 Objects
  • 7 Keys
  • 8 Multiple Mutexes
  • 9 Multiple Events
  • 10 Distributed Computing

Cited on: Channel, Lock ordering, Multiprocessing, Mutex, Reentrant lock, Run-once initialization, Semaphore, Sequential execution, Thread-local storage

Programming with C++20: Concepts, Coroutines, Ranges, and more

Andreas Fertig · 1st edition · Fertig Publications · 2021
a concurrency chapter in a broader book · on the shelf · publisher ↗ · example code ↗

The concurrency chapters
  • 2 Coroutines: Suspending functions

Cited on: Suspension point