Xmipp  v3.23.11-Nereus
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
ThreadTaskDistributor Class Reference

#include <xmipp_threads.h>

Inheritance diagram for ThreadTaskDistributor:
Inheritance graph
[legend]
Collaboration diagram for ThreadTaskDistributor:
Collaboration graph
[legend]

Public Member Functions

 ThreadTaskDistributor (size_t nTasks, size_t bSize)
 
virtual ~ThreadTaskDistributor ()
 
virtual void reset ()
 
- Public Member Functions inherited from ParallelTaskDistributor
 ParallelTaskDistributor (size_t nTasks, size_t bSize)
 
virtual ~ParallelTaskDistributor ()
 
void clear ()
 
void setBlockSize (size_t bSize)
 
int getBlockSize () const
 
bool getTasks (size_t &first, size_t &last)
 
bool setAssignedTasks (size_t tasks)
 

Protected Member Functions

virtual void lock ()
 
virtual void unlock ()
 
virtual bool distribute (size_t &first, size_t &last)
 

Protected Attributes

Mutex mutex
 Mutex to synchronize access to critical region. More...
 
- Protected Attributes inherited from ParallelTaskDistributor
size_t blockSize
 
size_t assignedTasks
 

Additional Inherited Members

- Public Attributes inherited from ParallelTaskDistributor
size_t numberOfTasks
 

Detailed Description

This class is a concrete implementation of ParallelTaskDistributor for POSIX threads. It use mutex as the locking mechanism and distributes tasks from 0 to numberOfTasks.

Definition at line 451 of file xmipp_threads.h.

Constructor & Destructor Documentation

◆ ThreadTaskDistributor()

ThreadTaskDistributor::ThreadTaskDistributor ( size_t  nTasks,
size_t  bSize 
)
inline

Definition at line 454 of file xmipp_threads.h.

454  :ParallelTaskDistributor(nTasks, bSize)
455  {}
ParallelTaskDistributor(size_t nTasks, size_t bSize)

◆ ~ThreadTaskDistributor()

virtual ThreadTaskDistributor::~ThreadTaskDistributor ( )
inlinevirtual

Definition at line 456 of file xmipp_threads.h.

457  {}

Member Function Documentation

◆ distribute()

bool ThreadTaskDistributor::distribute ( size_t &  first,
size_t &  last 
)
protectedvirtual

Implements ParallelTaskDistributor.

Reimplemented in MpiTaskDistributor.

Definition at line 346 of file xmipp_threads.cpp.

347 {
348  bool result = true;
349  first = last = 0;
351  {
352  result = false;
353  }
354  else
355  {
360  last = assignedTasks - 1;
361  }
362  return result;
363 }
glob_log first

◆ lock()

void ThreadTaskDistributor::lock ( )
protectedvirtual

Implements ParallelTaskDistributor.

Definition at line 336 of file xmipp_threads.cpp.

337 {
338  mutex.lock();
339 }
Mutex mutex
Mutex to synchronize access to critical region.
virtual void lock()

◆ reset()

virtual void ThreadTaskDistributor::reset ( )
inlinevirtual

Definition at line 465 of file xmipp_threads.h.

465 { setAssignedTasks(0); };
bool setAssignedTasks(size_t tasks)

◆ unlock()

void ThreadTaskDistributor::unlock ( )
protectedvirtual

Implements ParallelTaskDistributor.

Definition at line 341 of file xmipp_threads.cpp.

342 {
343  mutex.unlock();
344 }
Mutex mutex
Mutex to synchronize access to critical region.
virtual void unlock()

Member Data Documentation

◆ mutex

Mutex ThreadTaskDistributor::mutex
protected

Mutex to synchronize access to critical region.

Definition at line 458 of file xmipp_threads.h.


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