![]() |
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 (const bool deleteFinished=true) |
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 86 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 94 of file FXWorkerThread.h.
References FXWorkerThread::FXWorkerThread().
|
inlinevirtual |
Destructor.
Stopping and deleting all workers by calling clear.
Definition at line 105 of file FXWorkerThread.h.
|
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 133 of file FXWorkerThread.h.
References FXWorkerThread::Task::setIndex().
Referenced by LandmarkLookupTable< E, V >::LandmarkLookupTable().
|
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 147 of file FXWorkerThread.h.
References FXWorkerThread::myCondition, and FXWorkerThread::myMutex.
Referenced by FXWorkerThread::run().
|
inline |
Adds the given thread to the pool.
[in] | w | the thread to add |
Definition at line 122 of file FXWorkerThread.h.
Referenced by FXWorkerThread::FXWorkerThread().
|
inline |
Stops and deletes all worker threads.
Definition at line 111 of file FXWorkerThread.h.
|
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 180 of file FXWorkerThread.h.
|
inline |
locks the pool mutex
Definition at line 193 of file FXWorkerThread.h.
|
inline |
Returns the number of threads in the pool.
Definition at line 188 of file FXWorkerThread.h.
Referenced by LandmarkLookupTable< E, V >::LandmarkLookupTable().
|
inline |
unlocks the pool mutex
Definition at line 198 of file FXWorkerThread.h.
|
inline |
waits for all tasks to be finished
Definition at line 156 of file FXWorkerThread.h.
References FXWorkerThread::myCondition, and FXWorkerThread::myMutex.
Referenced by LandmarkLookupTable< E, V >::LandmarkLookupTable().
|
private |
the semaphore to wait on for finishing all tasks
Definition at line 210 of file FXWorkerThread.h.
|
private |
list of finished tasks
Definition at line 212 of file FXWorkerThread.h.
|
private |
the internal mutex for the task list
Definition at line 206 of file FXWorkerThread.h.
|
private |
the number of finished tasks (is reset when the pool runs empty)
Definition at line 216 of file FXWorkerThread.h.
|
private |
the pool mutex for external sync
Definition at line 208 of file FXWorkerThread.h.
|
private |
the running index for the next task
Definition at line 214 of file FXWorkerThread.h.
|
private |
the current worker threads
Definition at line 204 of file FXWorkerThread.h.