SUMO - Simulation of Urban MObility
FXWorkerThread Class Reference

A thread repeatingly calculating incoming tasks. More...

#include <FXWorkerThread.h>

Inheritance diagram for FXWorkerThread:
Inheritance graph
Collaboration diagram for FXWorkerThread:
Collaboration graph

Data Structures

class  Pool
 A pool of worker threads which distributes the tasks and collects the results. More...
 
class  Task
 Abstract superclass of a task to be run with an index to keep track of pending tasks. More...
 

Public Member Functions

void add (Task *t)
 Adds the given task to this thread to be calculated. More...
 
 FXWorkerThread (Pool &pool)
 Constructor. More...
 
FXint run ()
 Main execution method of this thread. More...
 
void stop ()
 Stops the thread. More...
 
virtual ~FXWorkerThread ()
 Destructor. More...
 

Private Attributes

FXCondition myCondition
 the semaphore when waiting for new tasks More...
 
int myCounter
 counting completed tasks for debugging / profiling More...
 
FXMutex myMutex
 the mutex for the task list More...
 
PoolmyPool
 the pool for this thread More...
 
bool myStopped
 whether we are still running More...
 
std::list< Task * > myTasks
 the list of pending tasks More...
 

Detailed Description

A thread repeatingly calculating incoming tasks.

Definition at line 47 of file FXWorkerThread.h.

Constructor & Destructor Documentation

§ FXWorkerThread()

FXWorkerThread::FXWorkerThread ( Pool pool)
inline

Constructor.

Adds the thread to the given pool and starts it.

Parameters
[in]poolthe pool for this thread

Definition at line 225 of file FXWorkerThread.h.

References FXWorkerThread::Pool::addWorker().

Referenced by FXWorkerThread::Pool::Pool().

§ ~FXWorkerThread()

virtual FXWorkerThread::~FXWorkerThread ( )
inlinevirtual

Destructor.

Stops the thread by calling stop.

Definition at line 234 of file FXWorkerThread.h.

References stop().

Member Function Documentation

§ add()

void FXWorkerThread::add ( Task t)
inline

Adds the given task to this thread to be calculated.

Parameters
[in]tthe task to add

Definition at line 242 of file FXWorkerThread.h.

References myCondition, myMutex, and myTasks.

§ run()

FXint FXWorkerThread::run ( )
inline

Main execution method of this thread.

Checks for new tasks, calculates them and puts them in the finished list of the pool until being stopped.

Returns
always 0

Definition at line 255 of file FXWorkerThread.h.

References FXWorkerThread::Pool::addFinished(), myCondition, myCounter, myMutex, myPool, myStopped, myTasks, and FXWorkerThread::Task::run().

§ stop()

void FXWorkerThread::stop ( )
inline

Stops the thread.

The currently running task will be finished but all further tasks are discarded.

Definition at line 281 of file FXWorkerThread.h.

References myCondition, myMutex, and myStopped.

Referenced by ~FXWorkerThread().

Field Documentation

§ myCondition

FXCondition FXWorkerThread::myCondition
private

the semaphore when waiting for new tasks

Definition at line 295 of file FXWorkerThread.h.

Referenced by add(), FXWorkerThread::Pool::addFinished(), run(), stop(), and FXWorkerThread::Pool::waitAll().

§ myCounter

int FXWorkerThread::myCounter
private

counting completed tasks for debugging / profiling

Definition at line 301 of file FXWorkerThread.h.

Referenced by run().

§ myMutex

FXMutex FXWorkerThread::myMutex
private

the mutex for the task list

Definition at line 293 of file FXWorkerThread.h.

Referenced by add(), FXWorkerThread::Pool::addFinished(), run(), stop(), and FXWorkerThread::Pool::waitAll().

§ myPool

Pool& FXWorkerThread::myPool
private

the pool for this thread

Definition at line 291 of file FXWorkerThread.h.

Referenced by run().

§ myStopped

bool FXWorkerThread::myStopped
private

whether we are still running

Definition at line 299 of file FXWorkerThread.h.

Referenced by run(), and stop().

§ myTasks

std::list<Task*> FXWorkerThread::myTasks
private

the list of pending tasks

Definition at line 297 of file FXWorkerThread.h.

Referenced by add(), and run().


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