Geant4-11
|
#include <UserTaskQueue.hh>
Public Types | |
typedef std::atomic< intmax_t > | AtomicInt |
typedef std::function< void()> | function_type |
typedef std::uniform_int_distribution< int > | int_dist_t |
typedef std::default_random_engine | random_engine_t |
typedef uintmax_t | size_type |
typedef std::shared_ptr< VTask > | task_pointer |
typedef std::vector< TaskSubQueue * > | TaskSubQueueContainer |
typedef std::set< ThreadId > | ThreadIdSet |
Public Member Functions | |
virtual bool | bin_empty (size_type bin) const override |
virtual size_type | bin_size (size_type bin) const override |
virtual VUserTaskQueue * | clone () override |
virtual bool | empty () const override |
virtual void | ExecuteOnAllThreads (ThreadPool *tp, function_type f) override |
virtual void | ExecuteOnSpecificThreads (ThreadIdSet tid_set, ThreadPool *tp, function_type f) override |
virtual task_pointer | GetTask (intmax_t subq=-1, intmax_t nitr=-1) override |
virtual intmax_t | GetThreadBin () const override |
task_pointer | GetThreadBinTask () |
virtual intmax_t | InsertTask (task_pointer &&, ThreadData *=nullptr, intmax_t subq=-1) override PTL_NO_SANITIZE_THREAD |
virtual void | resize (intmax_t) override |
virtual size_type | size () const override |
bool | true_empty () const override |
size_type | true_size () const override |
UserTaskQueue (intmax_t nworkers=-1, UserTaskQueue *=nullptr) | |
virtual void | Wait () override |
intmax_t | workers () const |
virtual | ~UserTaskQueue () override |
Protected Member Functions | |
intmax_t | GetInsertBin () const |
Protected Attributes | |
intmax_t | m_workers = 0 |
Private Member Functions | |
void | AcquireHold () |
void | ReleaseHold () |
Private Attributes | |
std::atomic_bool * | m_hold |
intmax_t | m_insert_bin |
bool | m_is_clone |
Mutex * | m_mutex |
std::atomic_uintmax_t * | m_ntasks |
std::vector< int >::iterator | m_rand_itr |
std::vector< int > | m_rand_list |
TaskSubQueueContainer * | m_subqueues |
intmax_t | m_thread_bin |
Definition at line 47 of file UserTaskQueue.hh.
|
inherited |
Definition at line 51 of file VUserTaskQueue.hh.
|
inherited |
Definition at line 53 of file VUserTaskQueue.hh.
typedef std::uniform_int_distribution<int> PTL::UserTaskQueue::int_dist_t |
Definition at line 53 of file UserTaskQueue.hh.
typedef std::default_random_engine PTL::UserTaskQueue::random_engine_t |
Definition at line 52 of file UserTaskQueue.hh.
|
inherited |
Definition at line 52 of file VUserTaskQueue.hh.
typedef std::shared_ptr<VTask> PTL::UserTaskQueue::task_pointer |
Definition at line 50 of file UserTaskQueue.hh.
typedef std::vector<TaskSubQueue*> PTL::UserTaskQueue::TaskSubQueueContainer |
Definition at line 51 of file UserTaskQueue.hh.
|
inherited |
Definition at line 54 of file VUserTaskQueue.hh.
UserTaskQueue::UserTaskQueue | ( | intmax_t | nworkers = -1 , |
UserTaskQueue * | parent = nullptr |
||
) |
Definition at line 37 of file UserTaskQueue.cc.
References PTL::ThreadPool::get_this_thread_id(), m_hold, m_insert_bin, m_is_clone, m_ntasks, m_subqueues, m_thread_bin, true_empty(), true_size(), and PTL::TypeMutex().
Referenced by clone().
|
overridevirtual |
Definition at line 76 of file UserTaskQueue.cc.
References m_hold, m_is_clone, m_ntasks, and m_subqueues.
|
private |
Definition at line 434 of file UserTaskQueue.cc.
References m_hold.
Referenced by ExecuteOnAllThreads(), and ExecuteOnSpecificThreads().
|
inlineoverridevirtual |
Implements PTL::VUserTaskQueue.
Definition at line 146 of file UserTaskQueue.hh.
|
inlineoverridevirtual |
Implements PTL::VUserTaskQueue.
Definition at line 138 of file UserTaskQueue.hh.
|
overridevirtual |
Implements PTL::VUserTaskQueue.
Definition at line 120 of file UserTaskQueue.cc.
References UserTaskQueue(), and PTL::VUserTaskQueue::workers().
|
inlineoverridevirtual |
Implements PTL::VUserTaskQueue.
Definition at line 122 of file UserTaskQueue.hh.
References m_ntasks.
|
overridevirtual |
Implements PTL::VUserTaskQueue.
Definition at line 305 of file UserTaskQueue.cc.
References AcquireHold(), PTL::ThreadData::GetInstance(), GetThreadBin(), InsertTask(), PTL::VUserTaskQueue::m_workers, ReleaseHold(), and G4InuclParticleNames::tp.
|
overridevirtual |
Implements PTL::VUserTaskQueue.
Definition at line 368 of file UserTaskQueue.cc.
References AcquireHold(), PTL::ThreadData::GetInstance(), GetThreadBin(), InsertTask(), PTL::VUserTaskQueue::m_workers, ReleaseHold(), and G4InuclParticleNames::tp.
|
protected |
Definition at line 138 of file UserTaskQueue.cc.
References m_insert_bin, and PTL::VUserTaskQueue::m_workers.
Referenced by InsertTask().
|
overridevirtual |
Implements PTL::VUserTaskQueue.
Definition at line 180 of file UserTaskQueue.cc.
References GetThreadBin(), GetThreadBinTask(), m_hold, PTL::VUserTaskQueue::m_workers, CLHEP::detail::n, and true_empty().
|
overridevirtual |
Implements PTL::VUserTaskQueue.
Definition at line 127 of file UserTaskQueue.cc.
References PTL::ThreadPool::get_this_thread_id(), m_thread_bin, and PTL::VUserTaskQueue::m_workers.
Referenced by ExecuteOnAllThreads(), ExecuteOnSpecificThreads(), GetTask(), GetThreadBinTask(), and InsertTask().
UserTaskQueue::task_pointer UserTaskQueue::GetThreadBinTask | ( | ) |
Definition at line 146 of file UserTaskQueue.cc.
References GetThreadBin(), and PTL::VUserTaskQueue::m_workers.
Referenced by GetTask().
|
overridevirtual |
Implements PTL::VUserTaskQueue.
Definition at line 238 of file UserTaskQueue.cc.
References GetInsertBin(), GetThreadBin(), m_hold, PTL::VUserTaskQueue::m_workers, CLHEP::detail::n, and PTL::ThreadData::within_task.
Referenced by ExecuteOnAllThreads(), and ExecuteOnSpecificThreads().
|
private |
Definition at line 447 of file UserTaskQueue.cc.
References m_hold.
Referenced by ExecuteOnAllThreads(), and ExecuteOnSpecificThreads().
|
overridevirtual |
Implements PTL::VUserTaskQueue.
Definition at line 95 of file UserTaskQueue.cc.
References m_mutex, m_ntasks, m_subqueues, PTL::VUserTaskQueue::m_workers, and CLHEP::detail::n.
|
inlineoverridevirtual |
Implements PTL::VUserTaskQueue.
Definition at line 130 of file UserTaskQueue.hh.
|
inlineoverridevirtual |
Reimplemented from PTL::VUserTaskQueue.
Definition at line 154 of file UserTaskQueue.hh.
Referenced by GetTask(), and UserTaskQueue().
|
inlineoverridevirtual |
Reimplemented from PTL::VUserTaskQueue.
Definition at line 165 of file UserTaskQueue.hh.
Referenced by UserTaskQueue().
|
inlineoverridevirtual |
|
inlineinherited |
Definition at line 104 of file VUserTaskQueue.hh.
References PTL::VUserTaskQueue::m_workers.
Referenced by clone().
|
private |
Definition at line 105 of file UserTaskQueue.hh.
Referenced by AcquireHold(), GetTask(), InsertTask(), ReleaseHold(), UserTaskQueue(), and ~UserTaskQueue().
|
mutableprivate |
Definition at line 104 of file UserTaskQueue.hh.
Referenced by GetInsertBin(), and UserTaskQueue().
|
private |
Definition at line 102 of file UserTaskQueue.hh.
Referenced by UserTaskQueue(), and ~UserTaskQueue().
|
private |
Definition at line 107 of file UserTaskQueue.hh.
Referenced by resize().
|
private |
Definition at line 106 of file UserTaskQueue.hh.
Referenced by empty(), resize(), UserTaskQueue(), and ~UserTaskQueue().
|
private |
Definition at line 110 of file UserTaskQueue.hh.
|
private |
Definition at line 109 of file UserTaskQueue.hh.
|
private |
Definition at line 108 of file UserTaskQueue.hh.
Referenced by resize(), UserTaskQueue(), and ~UserTaskQueue().
|
private |
Definition at line 103 of file UserTaskQueue.hh.
Referenced by GetThreadBin(), and UserTaskQueue().
|
protectedinherited |
Definition at line 109 of file VUserTaskQueue.hh.
Referenced by ExecuteOnAllThreads(), ExecuteOnSpecificThreads(), GetInsertBin(), GetTask(), GetThreadBin(), GetThreadBinTask(), InsertTask(), resize(), PTL::VUserTaskQueue::VUserTaskQueue(), and PTL::VUserTaskQueue::workers().