Geant4-11
Public Types | Public Member Functions | Static Public Member Functions | Data Fields
PTL::ThreadData Class Reference

#include <ThreadData.hh>

Public Types

template<typename Tp >
using TaskStack = std::deque< Tp >
 

Public Member Functions

 ThreadData (ThreadPool *tp)
 
void update ()
 
 ~ThreadData ()=default
 

Static Public Member Functions

static ThreadData *& GetInstance ()
 

Data Fields

VUserTaskQueuecurrent_queue = nullptr
 
bool is_main = false
 
TaskStack< VUserTaskQueue * > queue_stack = {}
 
intmax_t task_depth = 0
 
ThreadPoolthread_pool = nullptr
 
bool within_task = false
 

Detailed Description

Definition at line 132 of file ThreadData.hh.

Member Typedef Documentation

◆ TaskStack

template<typename Tp >
using PTL::ThreadData::TaskStack = std::deque<Tp>

Definition at line 136 of file ThreadData.hh.

Constructor & Destructor Documentation

◆ ThreadData()

ThreadData::ThreadData ( ThreadPool tp)

Definition at line 43 of file ThreadData.cc.

44: is_main((tp) ? tp->is_main() : false)
46, current_queue((tp) ? tp->get_queue() : nullptr)
48{}
VUserTaskQueue * current_queue
Definition: ThreadData.hh:148
TaskStack< VUserTaskQueue * > queue_stack
Definition: ThreadData.hh:149
ThreadPool * thread_pool
Definition: ThreadData.hh:147

References current_queue.

◆ ~ThreadData()

PTL::ThreadData::~ThreadData ( )
default

Member Function Documentation

◆ GetInstance()

ThreadData *& ThreadData::GetInstance ( )
static

Definition at line 35 of file ThreadData.cc.

36{
37 static thread_local ThreadData* _instance = nullptr;
38 return _instance;
39}

Referenced by PTL::UserTaskQueue::ExecuteOnAllThreads(), PTL::UserTaskQueue::ExecuteOnSpecificThreads(), PTL::internal::get_task_depth(), and PTL::ThreadPool::insert().

◆ update()

void ThreadData::update ( )

Definition at line 53 of file ThreadData.cc.

54{
55 if(!thread_pool)
56 return;
58 queue_stack.push_back(current_queue);
59}
task_queue_t * get_queue() const
Definition: ThreadPool.hh:127

References current_queue, PTL::ThreadPool::get_queue(), queue_stack, and thread_pool.

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

Field Documentation

◆ current_queue

VUserTaskQueue* PTL::ThreadData::current_queue = nullptr

Definition at line 148 of file ThreadData.hh.

Referenced by PTL::ThreadPool::execute_thread(), ThreadData(), and update().

◆ is_main

bool PTL::ThreadData::is_main = false

Definition at line 144 of file ThreadData.hh.

◆ queue_stack

TaskStack<VUserTaskQueue*> PTL::ThreadData::queue_stack = {}

Definition at line 149 of file ThreadData.hh.

Referenced by update().

◆ task_depth

intmax_t PTL::ThreadData::task_depth = 0

Definition at line 146 of file ThreadData.hh.

Referenced by PTL::internal::get_task_depth().

◆ thread_pool

ThreadPool* PTL::ThreadData::thread_pool = nullptr

Definition at line 147 of file ThreadData.hh.

Referenced by update().

◆ within_task

bool PTL::ThreadData::within_task = false

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