SUMO - Simulation of Urban MObility
|
A pool of worker threads which distributes the tasks and collects the results. More...
#include <FXWorkerThread.h>
Public Member Functions | |
void | add (Task *const t, int index=-1) |
Gives a number to the given task and assigns it to the worker with the given index. If the index is negative, assign to the next (round robin) one. More... | |
void | addFinished (Task *const t) |
Adds the given task to the list of finished tasks and assigns it to a randomly chosen worker. More... | |
void | addWorker (FXWorkerThread *const w) |
Adds the given thread to the pool. More... | |
void | clear () |
Stops and deletes all worker threads. More... | |
bool | isFull () const |
Checks whether there are currently more pending tasks than threads. More... | |
void | lock () |
locks the pool mutex More... | |
Pool (int numThreads=0) | |
Constructor. More... | |
int | size () const |
Returns the number of threads in the pool. More... | |
void | unlock () |
unlocks the pool mutex More... | |
void | waitAll () |
waits for all tasks to be finished More... | |
virtual | ~Pool () |
Destructor. More... | |
Private Attributes | |
FXCondition | myCondition |
the semaphore to wait on for finishing all tasks More... | |
std::list< Task * > | myFinishedTasks |
list of finished tasks More... | |
FXMutex | myMutex |
the internal mutex for the task list More... | |
int | myNumFinished |
the number of finished tasks (is reset when the pool runs empty) More... | |
FXMutex | myPoolMutex |
the pool mutex for external sync More... | |
int | myRunningIndex |
the running index for the next task More... | |
std::vector< FXWorkerThread * > | myWorkers |
the current worker threads More... | |
A pool of worker threads which distributes the tasks and collects the results.
Definition at line 87 of file FXWorkerThread.h.
|
inline |
Constructor.
May initialize the pool with a given number of workers.
[in] | numThreads | the number of threads to create |
Definition at line 95 of file FXWorkerThread.h.
References FXWorkerThread::FXWorkerThread().
|
inlinevirtual |
Destructor.
Stopping and deleting all workers by calling clear.
Definition at line 106 of file FXWorkerThread.h.
References clear().
|
inline |
Gives a number to the given task and assigns it to the worker with the given index. If the index is negative, assign to the next (round robin) one.
[in] | t | the task to add |
[in] | index | index of the worker thread to use or -1 for an arbitrary one |
Definition at line 134 of file FXWorkerThread.h.
References myRunningIndex, myWorkers, and FXWorkerThread::Task::setIndex().
|
inline |
Adds the given task to the list of finished tasks and assigns it to a randomly chosen worker.
Locks the internal mutex and counts the finished tasks. This is to be called by the worker thread only.
[in] | t | the task to add |
Definition at line 148 of file FXWorkerThread.h.
References myCondition, myFinishedTasks, myMutex, and myNumFinished.
Referenced by FXWorkerThread::run().
|
inline |
Adds the given thread to the pool.
[in] | w | the thread to add |
Definition at line 123 of file FXWorkerThread.h.
References myWorkers.
Referenced by FXWorkerThread::FXWorkerThread().
|
inline |
Stops and deletes all worker threads.
Definition at line 112 of file FXWorkerThread.h.
References myWorkers.
Referenced by ~Pool().
|
inline |
Checks whether there are currently more pending tasks than threads.
This is only a rough estimate because the tasks are already assigned and there could be an idle thread even though the number of tasks is large.
Definition at line 179 of file FXWorkerThread.h.
References myNumFinished, myRunningIndex, and size().
|
inline |
|
inline |
Returns the number of threads in the pool.
Definition at line 187 of file FXWorkerThread.h.
References myWorkers.
Referenced by isFull().
|
inline |
|
inline |
waits for all tasks to be finished
Definition at line 157 of file FXWorkerThread.h.
References myCondition, myFinishedTasks, myMutex, myNumFinished, and myRunningIndex.
|
private |
the semaphore to wait on for finishing all tasks
Definition at line 209 of file FXWorkerThread.h.
Referenced by addFinished(), and waitAll().
|
private |
list of finished tasks
Definition at line 211 of file FXWorkerThread.h.
Referenced by addFinished(), and waitAll().
|
private |
the internal mutex for the task list
Definition at line 205 of file FXWorkerThread.h.
Referenced by addFinished(), and waitAll().
|
private |
the number of finished tasks (is reset when the pool runs empty)
Definition at line 215 of file FXWorkerThread.h.
Referenced by addFinished(), isFull(), and waitAll().
|
private |
the pool mutex for external sync
Definition at line 207 of file FXWorkerThread.h.
|
private |
the running index for the next task
Definition at line 213 of file FXWorkerThread.h.
|
private |
the current worker threads
Definition at line 203 of file FXWorkerThread.h.
Referenced by add(), addWorker(), clear(), and size().