Eclipse SUMO - Simulation of Urban MObility
FXWorkerThread Class Reference

A thread repeatingly calculating incoming tasks. More...

#include <FXWorkerThread.h>

Inheritance diagram for FXWorkerThread:
Collaboration diagram for FXWorkerThread:

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...
 
std::list< Task * > myCurrentTasks
 the list of tasks which are currently calculated 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 49 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 292 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 305 of file FXWorkerThread.h.

References stop(), toString(), and WRITE_MESSAGE.

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 319 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 332 of file FXWorkerThread.h.

References FXWorkerThread::Pool::addFinished(), myCondition, myCurrentTasks, myMutex, myPool, myStopped, myTasks, and FXWorkerThread::Pool::setException().

◆ stop()

void FXWorkerThread::stop ( )
inline

Stops the thread.

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

Definition at line 368 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 394 of file FXWorkerThread.h.

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

◆ myCurrentTasks

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

the list of tasks which are currently calculated

Definition at line 398 of file FXWorkerThread.h.

Referenced by run().

◆ myMutex

FXMutex FXWorkerThread::myMutex
private

◆ myPool

Pool& FXWorkerThread::myPool
private

the pool for this thread

Definition at line 390 of file FXWorkerThread.h.

Referenced by run().

◆ myStopped

bool FXWorkerThread::myStopped
private

whether we are still running

Definition at line 400 of file FXWorkerThread.h.

Referenced by run(), and stop().

◆ myTasks

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

the list of pending tasks

Definition at line 396 of file FXWorkerThread.h.

Referenced by add(), and run().


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