Loading...
Searching...
No Matches
juce::ThreadPoolJob Class Referenceabstract

## 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

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

- juce_core/threads/juce_ThreadPool.h

## Public Types

enum | JobStatus { jobHasFinished = 0 , jobNeedsRunningAgain }
| These are the values that can be returned by the runJob() method. More...

## Public Member Functions

| ThreadPoolJob (const String &name)
| Creates a thread pool job object.
virtual | ~ThreadPoolJob ()
| Destructor.
String | getJobName () const
| Returns the name of this job.
void | setJobName (const String &newName)
| Changes the job's name.
virtual JobStatus | runJob ()=0
| Performs the actual work that this job needs to do.
bool | isRunning () const noexcept
| Returns true if this job is currently running its runJob() method.
bool | shouldExit () const noexcept
| Returns true if something is trying to interrupt this job and make it stop.
void | 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.
void | addListener (Thread::Listener *)
| Add a listener to this thread job which will receive a callback when signalJobShouldExit was called on this thread job.
void | removeListener (Thread::Listener *)
| Removes a listener added with addListener.

## Static Public Member Functions

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

## Member Enums

## JobStatus

enum juce::ThreadPoolJob::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

## Constructors and Destructors

## 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().

References name.

Referenced by getCurrentThreadPoolJob().

## ~ThreadPoolJob()

virtual juce::ThreadPoolJob::~ThreadPoolJob | ( |  | ) |

virtual

Destructor.

## Member Functions

## getJobName()

String juce::ThreadPoolJob::getJobName | ( |  | ) | const

Returns the name of this job.

See also
  setJobName

## setJobName()

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

Changes the job's name.

See also
  getJobName

## 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()

## isRunning()

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

inline noexcept

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

## shouldExit()

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

inline noexcept

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()

## 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()

## addListener()

void juce::ThreadPoolJob::addListener | ( | Thread::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

## removeListener()

void juce::ThreadPoolJob::removeListener | ( | Thread::Listener * |  | ) |

Removes a listener added with addListener.

## 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.

References ThreadPoolJob().

### Purchase

Get JUCE

### Discover

What's New in JUCE Features

### Learn

Documentaion Tutorials Made with JUCE Resources

### Support

JUCE Forum Newsletter Archive

### About

Contact Us JUCE Legal JUCE Licensing FAQ

### Events

Audio Developer Conference
© Raw Material Software Limited