Table of Contents
Fetching ...

A simple and fast C++ thread pool implementation capable of running task graphs

Dmytro Puyda

TL;DR

The paper introduces a minimal, fast C++20 thread pool capable of executing task graphs, implemented with a per-thread Chase-Lev work-stealing deque to minimize contention. It presents a task-graph scheduler where each task tracks predecessor/successor relationships, enabling ready tasks to run on the same worker or be re-submitted for parallel execution. Benchmarks indicate competitive CPU performance compared to Taskflow on simple workloads, demonstrating the practicality of a lightweight, dependency-aware pool. The implementation is open-source under the MIT License and aims to provide a compact, dependency-free alternative leveraging standard C++20 features.

Abstract

In this paper, the author presents a simple and fast C++ thread pool implementation capable of running task graphs. The implementation is publicly available on GitHub, see https://github.com/dpuyda/scheduling.

A simple and fast C++ thread pool implementation capable of running task graphs

TL;DR

The paper introduces a minimal, fast C++20 thread pool capable of executing task graphs, implemented with a per-thread Chase-Lev work-stealing deque to minimize contention. It presents a task-graph scheduler where each task tracks predecessor/successor relationships, enabling ready tasks to run on the same worker or be re-submitted for parallel execution. Benchmarks indicate competitive CPU performance compared to Taskflow on simple workloads, demonstrating the practicality of a lightweight, dependency-aware pool. The implementation is open-source under the MIT License and aims to provide a compact, dependency-free alternative leveraging standard C++20 features.

Abstract

In this paper, the author presents a simple and fast C++ thread pool implementation capable of running task graphs. The implementation is publicly available on GitHub, see https://github.com/dpuyda/scheduling.
Paper Structure (9 sections)