A thread that keeps a list of clients, and calls each one in turn, giving them all a chance to run some sort of short task. More...
#include <juce_TimeSliceThread.h>
Public Member Functions | |
TimeSliceThread (const String &threadName) | |
Creates a TimeSliceThread. | |
~TimeSliceThread () override | |
Destructor. | |
void | addTimeSliceClient (TimeSliceClient *clientToAdd, int millisecondsBeforeStarting=0) |
Adds a client to the list. | |
void | moveToFrontOfQueue (TimeSliceClient *clientToMove) |
If the given client is waiting in the queue, it will be moved to the front and given a time-slice as soon as possible. | |
void | removeTimeSliceClient (TimeSliceClient *clientToRemove) |
Removes a client from the list. | |
void | removeAllClients () |
Removes all the active and pending clients from the list. | |
int | getNumClients () const |
Returns the number of registered clients. | |
TimeSliceClient * | getClient (int index) const |
Returns one of the registered clients. | |
bool | contains (const TimeSliceClient *) const |
Returns true if the client is currently registered. | |
Public Member Functions inherited from Thread | |
Thread (const String &threadName, size_t threadStackSize=osDefaultStackSize) | |
Creates a thread. | |
virtual | ~Thread () |
Destructor. | |
virtual void | run ()=0 |
Must be implemented to perform the thread's actual code. | |
bool | startThread () |
Attempts to start a new thread with default ('Priority::normal') priority. | |
bool | startThread (Priority newPriority) |
Attempts to start a new thread with a given priority. | |
bool | startRealtimeThread (const RealtimeOptions &options) |
Starts the thread with realtime performance characteristics on platforms that support it. | |
bool | stopThread (int timeOutMilliseconds) |
Attempts to stop the thread running. | |
bool | isThreadRunning () const |
Returns true if the thread is currently active. | |
void | signalThreadShouldExit () |
Sets a flag to tell the thread it should stop. | |
bool | threadShouldExit () const |
Checks whether the thread has been told to stop running. | |
bool | waitForThreadToExit (int timeOutMilliseconds) const |
Waits for the thread to stop. | |
void | addListener (Listener *) |
Add a listener to this thread which will receive a callback when signalThreadShouldExit was called on this thread. | |
void | removeListener (Listener *) |
Removes a listener added with addListener. | |
bool | isRealtime () const |
Returns true if this Thread represents a realtime thread. | |
void | setAffinityMask (uint32 affinityMask) |
Sets the affinity mask for the thread. | |
bool | wait (double timeOutMilliseconds) const |
Suspends the execution of this thread until either the specified timeout period has elapsed, or another thread calls the notify() method to wake it up. | |
void | notify () const |
Wakes up the thread. | |
ThreadID | getThreadId () const noexcept |
Returns the ID of this thread. | |
const String & | getThreadName () const noexcept |
Returns the name of the thread. | |
Additional Inherited Members | |
Public Types inherited from Thread | |
enum class | Priority { highest = 2 , high = 1 , normal = 0 , low = -1 , background = -2 } |
The different runtime priorities of non-realtime threads. More... | |
using | ThreadID = void* |
A value type used for thread IDs. | |
Static Public Member Functions inherited from Thread | |
static bool | launch (std::function< void()> functionToRun) |
Invokes a lambda or function on its own thread with the default priority. | |
static bool | launch (Priority priority, std::function< void()> functionToRun) |
Invokes a lambda or function on its own thread with a custom priority. | |
static bool | currentThreadShouldExit () |
Checks whether the current thread has been told to stop running. | |
static void JUCE_CALLTYPE | setCurrentThreadAffinityMask (uint32 affinityMask) |
Changes the affinity mask for the caller thread. | |
static void JUCE_CALLTYPE | sleep (int milliseconds) |
Suspends the execution of the current thread until the specified timeout period has elapsed (note that this may not be exact). | |
static void JUCE_CALLTYPE | yield () |
Yields the current thread's CPU time-slot and allows a new thread to run. | |
static ThreadID JUCE_CALLTYPE | getCurrentThreadId () |
Returns an id that identifies the caller thread. | |
static Thread *JUCE_CALLTYPE | getCurrentThread () |
Finds the thread object that is currently running. | |
static void JUCE_CALLTYPE | setCurrentThreadName (const String &newThreadName) |
Changes the name of the caller thread. | |
static void | initialiseJUCE (void *jniEnv, void *jContext) |
Initialises the JUCE subsystem for projects not created by the Projucer. | |
Static Public Attributes inherited from Thread | |
static constexpr size_t | osDefaultStackSize { 0 } |
Protected Member Functions inherited from Thread | |
Priority | getPriority () const |
Returns the current priority of this thread. | |
bool | setPriority (Priority newPriority) |
Attempts to set the priority for this thread. | |
A thread that keeps a list of clients, and calls each one in turn, giving them all a chance to run some sort of short task.
|
explicit |
Creates a TimeSliceThread.
When first created, the thread is not running. Use the startThread() method to start it.
|
override |
Destructor.
Deleting a Thread object that is running will only give the thread a brief opportunity to stop itself cleanly, so it's recommended that you should always call stopThread() with a decent timeout before deleting, to avoid the thread being forcibly killed (which is a Bad Thing).
void TimeSliceThread::addTimeSliceClient | ( | TimeSliceClient * | clientToAdd, |
int | millisecondsBeforeStarting = 0 ) |
Adds a client to the list.
The client's callbacks will start after the number of milliseconds specified by millisecondsBeforeStarting (and this may happen before this method has returned).
void TimeSliceThread::moveToFrontOfQueue | ( | TimeSliceClient * | clientToMove | ) |
If the given client is waiting in the queue, it will be moved to the front and given a time-slice as soon as possible.
If the specified client has not been added, nothing will happen.
void TimeSliceThread::removeTimeSliceClient | ( | TimeSliceClient * | clientToRemove | ) |
Removes a client from the list.
This method will make sure that all callbacks to the client have completely finished before the method returns.
void TimeSliceThread::removeAllClients | ( | ) |
Removes all the active and pending clients from the list.
This method will make sure that all callbacks to clients have finished before the method returns.
int TimeSliceThread::getNumClients | ( | ) | const |
Returns the number of registered clients.
TimeSliceClient * TimeSliceThread::getClient | ( | int | index | ) | const |
Returns one of the registered clients.
bool TimeSliceThread::contains | ( | const TimeSliceClient * | ) | const |
Returns true if the client is currently registered.