Geant4-11
Public Types | Public Member Functions | Protected Attributes
PTL::VUserTaskQueue Class Referenceabstract

#include <VUserTaskQueue.hh>

Inheritance diagram for PTL::VUserTaskQueue:
PTL::UserTaskQueue

Public Types

typedef std::atomic< intmax_t > AtomicInt
 
typedef std::function< void()> function_type
 
typedef uintmax_t size_type
 
typedef std::shared_ptr< VTasktask_pointer
 
typedef std::set< ThreadIdThreadIdSet
 

Public Member Functions

virtual bool bin_empty (size_type bin) const =0
 
virtual size_type bin_size (size_type bin) const =0
 
virtual VUserTaskQueueclone ()=0
 
virtual bool empty () const =0
 
virtual void ExecuteOnAllThreads (ThreadPool *tp, function_type f)=0
 
virtual void ExecuteOnSpecificThreads (ThreadIdSet tid_set, ThreadPool *tp, function_type f)=0
 
virtual task_pointer GetTask (intmax_t subq=-1, intmax_t nitr=-1)=0
 
virtual intmax_t GetThreadBin () const =0
 
virtual intmax_t InsertTask (task_pointer &&, ThreadData *=nullptr, intmax_t subq=-1) PTL_NO_SANITIZE_THREAD=0
 
virtual void resize (intmax_t)=0
 
virtual size_type size () const =0
 
virtual bool true_empty () const
 
virtual size_type true_size () const
 
 VUserTaskQueue (intmax_t nworkers=-1)
 
virtual void Wait ()=0
 
intmax_t workers () const
 
virtual ~VUserTaskQueue ()=default
 

Protected Attributes

intmax_t m_workers = 0
 

Detailed Description

Definition at line 47 of file VUserTaskQueue.hh.

Member Typedef Documentation

◆ AtomicInt

typedef std::atomic<intmax_t> PTL::VUserTaskQueue::AtomicInt

Definition at line 51 of file VUserTaskQueue.hh.

◆ function_type

Definition at line 53 of file VUserTaskQueue.hh.

◆ size_type

typedef uintmax_t PTL::VUserTaskQueue::size_type

Definition at line 52 of file VUserTaskQueue.hh.

◆ task_pointer

typedef std::shared_ptr<VTask> PTL::VUserTaskQueue::task_pointer

Definition at line 50 of file VUserTaskQueue.hh.

◆ ThreadIdSet

Definition at line 54 of file VUserTaskQueue.hh.

Constructor & Destructor Documentation

◆ VUserTaskQueue()

VUserTaskQueue::VUserTaskQueue ( intmax_t  nworkers = -1)
explicit

Definition at line 35 of file VUserTaskQueue.cc.

36: m_workers(nworkers)
37{
38 if(m_workers < 0)
39 {
41 m_workers = (rm) ? rm->GetNumberOfThreads() + 1 // number of threads + 1
42 : (2 * std::thread::hardware_concurrency()) + 1;
43 // hyperthreads + 1
44 }
45}
virtual int GetNumberOfThreads() const
static TaskRunManager * GetMasterRunManager(bool useTBB=false)

References PTL::TaskRunManager::GetMasterRunManager(), PTL::TaskRunManager::GetNumberOfThreads(), and m_workers.

◆ ~VUserTaskQueue()

virtual PTL::VUserTaskQueue::~VUserTaskQueue ( )
virtualdefault

Member Function Documentation

◆ bin_empty()

virtual bool PTL::VUserTaskQueue::bin_empty ( size_type  bin) const
pure virtual

Implemented in PTL::UserTaskQueue.

◆ bin_size()

virtual size_type PTL::VUserTaskQueue::bin_size ( size_type  bin) const
pure virtual

Implemented in PTL::UserTaskQueue.

◆ clone()

virtual VUserTaskQueue * PTL::VUserTaskQueue::clone ( )
pure virtual

Implemented in PTL::UserTaskQueue.

◆ empty()

virtual bool PTL::VUserTaskQueue::empty ( ) const
pure virtual

◆ ExecuteOnAllThreads()

virtual void PTL::VUserTaskQueue::ExecuteOnAllThreads ( ThreadPool tp,
function_type  f 
)
pure virtual

◆ ExecuteOnSpecificThreads()

virtual void PTL::VUserTaskQueue::ExecuteOnSpecificThreads ( ThreadIdSet  tid_set,
ThreadPool tp,
function_type  f 
)
pure virtual

◆ GetTask()

virtual task_pointer PTL::VUserTaskQueue::GetTask ( intmax_t  subq = -1,
intmax_t  nitr = -1 
)
pure virtual

Implemented in PTL::UserTaskQueue.

Referenced by PTL::ThreadPool::execute_thread().

◆ GetThreadBin()

virtual intmax_t PTL::VUserTaskQueue::GetThreadBin ( ) const
pure virtual

Implemented in PTL::UserTaskQueue.

◆ InsertTask()

virtual intmax_t PTL::VUserTaskQueue::InsertTask ( task_pointer &&  ,
ThreadData = nullptr,
intmax_t  subq = -1 
)
pure virtual

◆ resize()

virtual void PTL::VUserTaskQueue::resize ( intmax_t  )
pure virtual

Implemented in PTL::UserTaskQueue.

Referenced by PTL::ThreadPool::resize().

◆ size()

virtual size_type PTL::VUserTaskQueue::size ( ) const
pure virtual

Implemented in PTL::UserTaskQueue.

Referenced by true_size().

◆ true_empty()

virtual bool PTL::VUserTaskQueue::true_empty ( ) const
inlinevirtual

Reimplemented in PTL::UserTaskQueue.

Definition at line 96 of file VUserTaskQueue.hh.

96{ return empty(); }
virtual bool empty() const =0

References empty().

◆ true_size()

virtual size_type PTL::VUserTaskQueue::true_size ( ) const
inlinevirtual

Reimplemented in PTL::UserTaskQueue.

Definition at line 95 of file VUserTaskQueue.hh.

95{ return size(); }
virtual size_type size() const =0

References size().

Referenced by PTL::ThreadPool::execute_thread().

◆ Wait()

virtual void PTL::VUserTaskQueue::Wait ( )
pure virtual

Implemented in PTL::UserTaskQueue.

◆ workers()

intmax_t PTL::VUserTaskQueue::workers ( ) const
inline

Definition at line 104 of file VUserTaskQueue.hh.

104{ return m_workers; }

References m_workers.

Referenced by PTL::UserTaskQueue::clone().

Field Documentation

◆ m_workers

intmax_t PTL::VUserTaskQueue::m_workers = 0
protected

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