A header-only C++17 library for building and executing directed acyclic graphs of asynchronous tasks.
transwarp is a header-only C++ library for task concurrency that allows developers to build directed acyclic graphs of tasks where each task can execute asynchronously. It solves the problem of orchestrating complex parallel computations by providing a flexible framework for defining task dependencies and executing them efficiently using thread pools.
C++ developers building applications that require fine-grained task parallelism, such as data processing pipelines, parallel algorithms, or systems with complex asynchronous workflows.
Developers choose transwarp for its minimal dependencies (only the C++ standard library), header-only design for easy integration, and comprehensive features like task cancellation, event systems, and visualization tools that go beyond basic threading libraries.
A header-only C++ library for task concurrency
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Header-only design with no external dependencies beyond the C++ standard library, allowing easy drop-in usage by copying a single file, as emphasized in the README.
Offers seven task types (e.g., root, consume, wait_any) for precise control over dependency and execution patterns, enabling complex parallel workflows without manual synchronization.
Includes a parallel executor with configurable thread pools for asynchronous scheduling, simplifying multi-core utilization without requiring external threading libraries.
Provides task cancellation with strategic points, an event system for lifecycle monitoring, and DOT graph visualization for debugging, as detailed in the API documentation.
Mastering the multiple task types, executors, and event systems requires significant effort compared to simpler concurrency tools like std::async, potentially slowing onboarding.
The task graph model and event listeners introduce performance overhead, which may not suit latency-sensitive applications despite compile-time optimization switches like TRANSWARP_MINIMUM_TASK_SIZE.
As a niche library, it lacks the extensive documentation, community support, and third-party tools available in established alternatives like Intel TBB or Boost.Asio.