114 void signalJobShouldExit();
137 std::atomic<bool>
shouldStop {
false }, isActive {
false }, shouldBeDeleted {
false };
168 ThreadPool (
int numberOfThreads,
size_t threadStackSize = 0);
221 bool deleteJobWhenFinished);
231 void addJob (std::function<
void()> job);
251 bool interruptIfRunning,
252 int timeOutMilliseconds);
266 int timeOutMilliseconds,
300 int timeOutMilliseconds)
const;
333 void createThreads (
int numThreads,
size_t threadStackSize = 0);
#define noexcept
Definition DistrhoDefines.h:72
Definition juce_Array.h:56
Definition juce_CriticalSection.h:43
Definition juce_ListenerList.h:70
Definition juce_OwnedArray.h:51
Definition juce_StringArray.h:35
Definition juce_String.h:53
Definition juce_Thread.h:181
Definition juce_ThreadPool.h:192
virtual bool isJobSuitable(ThreadPoolJob *job)=0
virtual ~JobSelector()=default
void moveJobToFront(const ThreadPoolJob *jobToMove) noexcept
Definition juce_ThreadPool.cpp:206
void createThreads(int numThreads, size_t threadStackSize=0)
Definition juce_ThreadPool.cpp:111
void addToDeleteList(OwnedArray< ThreadPoolJob > &, ThreadPoolJob *) const
Definition juce_ThreadPool.cpp:423
void addJob(ThreadPoolJob *job, bool deleteJobWhenFinished)
Definition juce_ThreadPool.cpp:129
OwnedArray< ThreadPoolThread > threads
Definition juce_ThreadPool.h:325
friend class ThreadPoolJob
Definition juce_ThreadPool.h:324
ThreadPoolJob * pickNextJobToRun()
Definition juce_ThreadPool.cpp:344
void stopThreads()
Definition juce_ThreadPool.cpp:120
CriticalSection lock
Definition juce_ThreadPool.h:327
int getNumThreads() const noexcept
Definition juce_ThreadPool.cpp:183
ThreadPoolJob * getJob(int index) const noexcept
Definition juce_ThreadPool.cpp:188
int getNumJobs() const noexcept
Definition juce_ThreadPool.cpp:177
bool runNextJob(ThreadPoolThread &)
Definition juce_ThreadPool.cpp:375
bool removeAllJobs(bool interruptRunningJobs, int timeOutMilliseconds, JobSelector *selectedJobsToRemove=nullptr)
Definition juce_ThreadPool.cpp:263
WaitableEvent jobFinishedSignal
Definition juce_ThreadPool.h:328
ThreadPool(int numberOfThreads, size_t threadStackSize=0)
Definition juce_ThreadPool.cpp:93
StringArray getNamesOfAllJobs(bool onlyReturnActiveJobs) const
Definition juce_ThreadPool.cpp:321
bool isJobRunning(const ThreadPoolJob *job) const noexcept
Definition juce_ThreadPool.cpp:200
bool setThreadPriorities(int newPriority)
Definition juce_ThreadPool.cpp:333
bool removeJob(ThreadPoolJob *job, bool interruptIfRunning, int timeOutMilliseconds)
Definition juce_ThreadPool.cpp:234
bool contains(const ThreadPoolJob *job) const noexcept
Definition juce_ThreadPool.cpp:194
bool waitForJobToFinish(const ThreadPoolJob *job, int timeOutMilliseconds) const
Definition juce_ThreadPool.cpp:216
Array< ThreadPoolJob * > jobs
Definition juce_ThreadPool.h:321
Definition juce_ThreadPool.h:45
ListenerList< Thread::Listener, Array< Thread::Listener *, CriticalSection > > listeners
Definition juce_ThreadPool.h:138
std::atomic< bool > isActive
Definition juce_ThreadPool.h:137
std::atomic< bool > shouldStop
Definition juce_ThreadPool.h:137
JobStatus
Definition juce_ThreadPool.h:71
@ jobHasFinished
Definition juce_ThreadPool.h:72
@ jobNeedsRunningAgain
Definition juce_ThreadPool.h:75
friend class ThreadPool
Definition juce_ThreadPool.h:134
ThreadPool * pool
Definition juce_ThreadPool.h:136
void setJobName(const String &newName)
Definition juce_ThreadPool.cpp:63
String getJobName() const
Definition juce_ThreadPool.cpp:58
bool isRunning() const noexcept
Definition juce_ThreadPool.h:98
bool shouldExit() const noexcept
Definition juce_ThreadPool.h:107
virtual JobStatus runJob()=0
String jobName
Definition juce_ThreadPool.h:135
ThreadPoolJob(const String &name)
Definition juce_ThreadPool.cpp:47
Definition juce_WaitableEvent.h:36
static const char * name
Definition pugl.h:1582
#define JUCE_API
Definition juce_StandardHeader.h:152
Definition carla_juce.cpp:31
Definition juce_ThreadPool.cpp:27
#define const
Definition zconf.h:137