Comments (4)
I have the same question. Or to rephrase it:
Is there any way to call "join" to all functions in the pool and queue without deleting the threads?
from ctpl.
From reading over the source, the simplest fix would be to add a start()
function like this
void start(int nThreads){
this->init();
this->resize(nThreads);
}
This effectively emulates the behavior of the constructor:
`thread_pool(int nThreads, int queueSize = _ctplThreadPoolLength_) : q(queueSize) { this->init(); this->resize(nThreads); }`
Which would allow you to restart the pool by effectively rebuilding the threads.
While I feel this would work, it would be a cheap fix to the underlying problem.
In a more ideal implementation the resize()
function would be written in a manor that would allow the resize to be performed without stopping all work. This would involve synchronizing the changes to the thread container with the workers themselves, allowing the workers to pause working instead of going to a full stop while threads are being added or removed.
from ctpl.
Does it delete and create all threads again?
Ideally we do not want unnecessary system calls to create threads.
from ctpl.
The bit of code I provided is the naive approach to solving the problem. It would wind up having to delete and rebuild the threads. See the last paragraph of my original comment.
A better solution would be a system that that can pause work on all of the threads and only kill the ones you that are needed. The issue isn't with the functionality of stop(). The issue is what it is being used for. It is being used before calling resize() to allow safe resizing of the pool.
It would be better to have another function that could pause work or have resize be written in a way that it can resize without having to stop work at all.
from ctpl.
Related Issues (20)
- Problem occurs when using multiple/nested function pointers and arguments HOT 1
- Pushing lambdas to thread pool HOT 1
- Small memory leak HOT 2
- Trivial: Collable?
- Library crash HOT 1
- Documentation of CTPL different versions
- How to pass function of classe HOT 3
- Why does the function with arguments have errors? HOT 2
- Pushing a function to the pool HOT 2
- Result: Process terminated due to timeout
- How to get threads details and termination?
- Problem in passing my function to "push" method HOT 1
- Resize thread pool
- How to wait for all Tasks to finish? HOT 2
- std::unique_lock shadow bug HOT 1
- Function call that should not compile is able to be passed into push()
- error: invalid use of non-static member function HOT 2
- Possible thread issue? HOT 1
- Refactor Push() to remove need for int argument
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ctpl.