OpenShot Audio Library | OpenShotAudio 0.3.2
Loading...
Searching...
No Matches
juce::ThreadPoolJob Class Referenceabstract

#include <juce_ThreadPool.h>

Public Types

enum  JobStatus { jobHasFinished = 0 , jobNeedsRunningAgain }
 

Public Member Functions

 ThreadPoolJob (const String &name)
 
virtual ~ThreadPoolJob ()
 
String getJobName () const
 
void setJobName (const String &newName)
 
virtual JobStatus runJob ()=0
 
bool isRunning () const noexcept
 
bool shouldExit () const noexcept
 
void signalJobShouldExit ()
 
void addListener (Thread::Listener *)
 
void removeListener (Thread::Listener *)
 

Static Public Member Functions

static ThreadPoolJobgetCurrentThreadPoolJob ()
 

Detailed Description

A task that is executed by a ThreadPool object.

A ThreadPool keeps a list of ThreadPoolJob objects which are executed by its threads.

The runJob() method needs to be implemented to do the task, and if the code that does the work takes a significant time to run, it must keep checking the shouldExit() method to see if something is trying to interrupt the job. If shouldExit() returns true, the runJob() method must return immediately.

See also
ThreadPool, Thread

Definition at line 44 of file juce_ThreadPool.h.

Member Enumeration Documentation

◆ JobStatus

These are the values that can be returned by the runJob() method.

Enumerator
jobHasFinished 

indicates that the job has finished and can be removed from the pool.

jobNeedsRunningAgain 

indicates that the job would like to be called again when a thread is free.

Definition at line 70 of file juce_ThreadPool.h.

Constructor & Destructor Documentation

◆ ThreadPoolJob()

juce::ThreadPoolJob::ThreadPoolJob ( const String name)
explicit

Creates a thread pool job object. After creating your job, add it to a thread pool with ThreadPool::addJob().

Definition at line 47 of file juce_ThreadPool.cpp.

◆ ~ThreadPoolJob()

juce::ThreadPoolJob::~ThreadPoolJob ( )
virtual

Destructor.

Definition at line 51 of file juce_ThreadPool.cpp.

Member Function Documentation

◆ addListener()

void juce::ThreadPoolJob::addListener ( Thread::Listener listener)

Add a listener to this thread job which will receive a callback when signalJobShouldExit was called on this thread job.

See also
signalJobShouldExit, removeListener

Definition at line 74 of file juce_ThreadPool.cpp.

◆ getCurrentThreadPoolJob()

ThreadPoolJob * juce::ThreadPoolJob::getCurrentThreadPoolJob ( )
static

If the calling thread is being invoked inside a runJob() method, this will return the ThreadPoolJob that it belongs to.

Definition at line 84 of file juce_ThreadPool.cpp.

◆ getJobName()

String juce::ThreadPoolJob::getJobName ( ) const

Returns the name of this job.

See also
setJobName

Definition at line 58 of file juce_ThreadPool.cpp.

◆ isRunning()

bool juce::ThreadPoolJob::isRunning ( ) const
inlinenoexcept

Returns true if this job is currently running its runJob() method.

Definition at line 98 of file juce_ThreadPool.h.

◆ removeListener()

void juce::ThreadPoolJob::removeListener ( Thread::Listener listener)

Removes a listener added with addListener.

Definition at line 79 of file juce_ThreadPool.cpp.

◆ runJob()

virtual JobStatus juce::ThreadPoolJob::runJob ( )
pure virtual

Performs the actual work that this job needs to do.

Your subclass must implement this method, in which is does its work.

If the code in this method takes a significant time to run, it must repeatedly check the shouldExit() method to see if something is trying to interrupt the job. If shouldExit() ever returns true, the runJob() method must return immediately.

If this method returns jobHasFinished, then the job will be removed from the pool immediately. If it returns jobNeedsRunningAgain, then the job will be left in the pool and will get a chance to run again as soon as a thread is free.

See also
shouldExit()

◆ setJobName()

void juce::ThreadPoolJob::setJobName ( const String newName)

Changes the job's name.

See also
getJobName

Definition at line 63 of file juce_ThreadPool.cpp.

◆ shouldExit()

bool juce::ThreadPoolJob::shouldExit ( ) const
inlinenoexcept

Returns true if something is trying to interrupt this job and make it stop.

Your runJob() method must call this whenever it gets a chance, and if it ever returns true, the runJob() method must return immediately.

See also
signalJobShouldExit()

Definition at line 107 of file juce_ThreadPool.h.

◆ signalJobShouldExit()

void juce::ThreadPoolJob::signalJobShouldExit ( )

Calling this will cause the shouldExit() method to return true, and the job should (if it's been implemented correctly) stop as soon as possible.

See also
shouldExit()

Definition at line 68 of file juce_ThreadPool.cpp.


The documentation for this class was generated from the following files: