thread-pool
Lazy
Our great sponsors
thread-pool | Lazy | |
---|---|---|
6 | 5 | |
1,924 | 109 | |
- | - | |
4.2 | 2.6 | |
about 1 month ago | 4 months ago | |
C++ | C++ | |
MIT License | The Unlicense |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
thread-pool
- Learn performance improvement
-
How do i make the main thread sleep while worker threads work and worker threads sleep when waiting for main thread to execute them
Nope, it's definitely a problem with your code, not an external problem. This is an inevitable result when your threading scheme is not watertight. I don't have any code snippets since I'm just remembering what I've done in the past on projects, but if you can't design it to work yourself I suggest using a library. You said you've been "dealing with [multithreading] for some time now and think I have a decent understanding" but that doesn't sound like you really have a solid theoretical understanding of the subject, especially considering that it's a notoriously difficult subject. My recommendation is either to go back and plan out a watertight synchronization scheme on paper (may require finding some lecture series on multithreading theory), or to use an off-the-shelf thread pool library like this one I just found by googling thread pool library. I suggest the former if this is a hobby project, but if this code has a possibility of ever being used by other people I suggest doing the latter.
-
Header-only C++14 quality thread pool
Hi, I am looking for a header-only C++14 (or lower) quality thread pool. Ideally, it would be similar to BS::thread_pool but in C++14. Most of them I find on GitHub are bloated (e.g. concurrencpp) or have many open Issues. Ideal usage would be similar to:
-
A C++17 thread pool for high-performance scientific computing
There are lots of them and many are built into the OS(e.g. GCD on mac's, Windows has a thread pool api, TBB on all of them...)
It would be neat if the github site https://github.com/bshoshany/thread-pool or the paper did some comparisons to the existing body out there.
Lazy
-
A fast, single queue thread pool created with C++20
Benchmarks is indeed a good question. Here is a C++17-style library for parallel function calls which avoids std::{function, future, promise} and uses disposable threads for running the functions. I have run a few benchmarks against a typical thread pool which uses a mutex and a condition variable and a vector of threads.
-
for_each with plain integers
You might consider using this header-only library.
-
Does Execution Policy in std::transform in gcc have any effect?
Using Lazy the simple header-only parallel library found here in Github.
-
Therads in Cpp
Unless you really want to play with "raw" C++ threads, you may be able to completely avoid them by using a library like this one. See the simple examples on the main page and check if they would suit your application.
-
How to force your code to use all CPU cores? In an efficient manner.
This header-only library might come in handy when experimenting with parallel functions. You can run any number of functions in parallel and gather the results conveniently. Take a look at the examples on the main page in Github and see if you find them useful.
What are some alternatives?
thread-pool - A modern, fast, lightweight thread pool library based on C++20
oneTBB - oneAPI Threading Building Blocks (oneTBB)
sobjectizer - An implementation of Actor, Publish-Subscribe, and CSP models in one rather small C++ framework. With performance, quality, and stability proved by years in the production.
ZIO - ZIO — A type-safe, composable library for async and concurrent programming in Scala
TDP - The Darkest Pipeline - Multithreaded pipelines for modern C++
not-enough-standards - A modern header-only C++ library that provides platform-independent utilities.
envpool - C++-based high-performance parallel environment execution engine (vectorized env) for general RL environments.
Taskflow - A General-purpose Parallel and Heterogeneous Task Programming System
concurrencpp - Modern concurrency for C++. Tasks, executors, timers and C++20 coroutines to rule them all
parallel-cellular-automata - Framework for building parallel cellular automata in C++. In it you can also find a work-stealing threadpool and a reusable barrier that you can use in other projects.