The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning. Learn more →
Top 23 C++ Concurrency Projects
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
parallel-hashmap
A family of header-only, very fast and memory-friendly hashmap and btree containers.
-
concurrencpp
Modern concurrency for C++. Tasks, executors, timers and C++20 coroutines to rule them all
-
SPSCQueue.h
A bounded single-producer single-consumer wait-free and lock-free queue written in C++11
-
continuable
C++14 asynchronous allocation aware futures (supporting then, exception handling, coroutines and connections)
-
SaaSHub
SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives
Swoole
For parallel programming nowadays, personally I reach for C++ Taskflow when I really care about performance, or a mix of core.async and running multiple load balanced instances when I’m doing more traditional web backend stuff in Clojure.
Slightly OT:
Are ZeroMQ and NanoMQ still widely used (and recommended)?
Loads of people have stated why easy GPU interfaces are difficult to create, but we solve many difficult things all the time.
Ultimately I think CPUs are just satisfactory for the vast vast majority of workloads. Servers rarely come with any GPUs to speak of. The ecosystem around GPUs is unattractive. CPUs have SIMD instructions that can help. There are so many reasons not to use GPUs. By the time anyone seriously considers using GPUs they're, in my imagination, typically seriously starved for performance, and looking to control as much of the execution details as possible. GPU programmers don't want an automagic solution.
So I think the demand for easy GPU interfaces is just very weak, and therefore no effort has taken off. The amount of work needed to make it as easy to use as CPUs is massive, and the only reason anyone would even attempt to take this on is to lock you in to expensive hardware (see CUDA).
For a practical suggestion, have you taken a look at https://arrayfire.com/ ? It can run on both CUDA and OpenCL, and it has C++, Rust and Python bindings.
CAF
% rm -rf /tmp/nccl ; git clone --recursive https://github.com/NVIDIA/nccl.git ; cd nccl ; git grep MPI Cloning into 'nccl'... remote: Enumerating objects: 2769, done. remote: Counting objects: 100% (336/336), done. remote: Compressing objects: 100% (140/140), done. remote: Total 2769 (delta 201), reused 287 (delta 196), pack-reused 2433 Receiving objects: 100% (2769/2769), 3.04 MiB | 3.37 MiB/s, done. Resolving deltas: 100% (1820/1820), done. README.md:NCCL (pronounced "Nickel") is a stand-alone library of standard communication routines for GPUs, implementing all-reduce, all-gather, reduce, broadcast, reduce-scatter, as well as any send/receive based communication pattern. It has been optimized to achieve high bandwidth on platforms using PCIe, NVLink, NVswitch, as well as networking using InfiniBand Verbs or TCP/IP sockets. NCCL supports an arbitrary number of GPUs installed in a single node or across multiple nodes, and can be used in either single- or multi-process (e.g., MPI) applications. src/collectives/broadcast.cc:/* Deprecated original "in place" function, similar to MPI */
Project mention: The One Billion Row Challenge in CUDA: from 17 minutes to 17 seconds | news.ycombinator.com | 2024-04-13Standard library maps/unordered_maps are themselves notoriously slow anyway. A sparse_hash_map from abseil or parallel-hashmaps[1] would be better.
I am using concurrencpp for my project. What I like about it is that it's basically a thread pool factory with coroutines. It allows for better structuring / organizing of multithreaded work. So for me the main advantage of coroutines is that the code looks easier to follow
C++ Concurrency related posts
- Open Swoole: PHP Server with Async IO, Coroutines and Fibers
- AMD's CDNA 3 Compute Architecture
- Open Swoole – Programmatic server for PHP with async IO, coroutines and fibers
- ZeroMQ – Relicense from LGPL3 and exceptions to MPL 2.0
- Essentials of Object Oriented and Functional Programming: A Guide to Modular Code
- C++ Jobs - Q3 2023
- Improvements of Clojure in his time
-
A note from our sponsor - WorkOS
workos.com | 19 Apr 2024
Index
What are some of the best open-source Concurrency projects in C++? This list will help you:
Project | Stars | |
---|---|---|
1 | Swoole | 18,203 |
2 | Taskflow | 9,520 |
3 | ZeroMQ | 9,256 |
4 | moodycamel | 8,785 |
5 | ArrayFire | 4,395 |
6 | readerwriterqueue | 3,429 |
7 | C++ Actor Framework | 3,095 |
8 | NCCL | 2,796 |
9 | libcds | 2,469 |
10 | HPX | 2,417 |
11 | parallel-hashmap | 2,307 |
12 | concurrencpp | 2,028 |
13 | thread-pool | 1,911 |
14 | moderngpu | 1,562 |
15 | Boost.Compute | 1,496 |
16 | junction | 1,365 |
17 | MPMCQueue.h | 1,079 |
18 | stdgpu | 1,077 |
19 | CacheLib | 1,075 |
20 | C++React | 997 |
21 | RaftLib | 922 |
22 | SPSCQueue.h | 821 |
23 | continuable | 809 |