Geant4 10.7.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
ThreadData.cc
Go to the documentation of this file.
1//
2// MIT License
3// Copyright (c) 2020 Jonathan R. Madsen
4// Permission is hereby granted, free of charge, to any person obtaining a copy
5// of this software and associated documentation files (the "Software"), to deal
6// in the Software without restriction, including without limitation the rights
7// to use, copy, modify, merge, publish, distribute, sublicense, and
8// copies of the Software, and to permit persons to whom the Software is
9// furnished to do so, subject to the following conditions:
10// The above copyright notice and this permission notice shall be included in
11// all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED
12// "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
13// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
14// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
15// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
16// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
17// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
18//
19// ---------------------------------------------------------------
20// Tasking class implementation
21//
22
23#include "PTL/ThreadData.hh"
24#include "PTL/ThreadPool.hh"
25#include "PTL/Threading.hh"
26#include "PTL/VUserTaskQueue.hh"
27
28#include <iostream>
29
30using namespace PTL;
31
32//======================================================================================//
33
36{
37 static thread_local ThreadData* _instance = nullptr;
38 return _instance;
39}
40
41//======================================================================================//
42
44: is_master(tp->is_master())
45, within_task(false)
46, task_depth(0)
47, thread_pool(tp)
48, current_queue(tp->get_queue())
49, queue_stack({ current_queue })
50{}
51
52//======================================================================================//
53
54void
56{
58 queue_stack.push_back(current_queue);
59}
60
61//======================================================================================//
62
64
65//======================================================================================//
static ThreadData *& GetInstance()
Definition: ThreadData.cc:35
ThreadData(ThreadPool *tp)
Definition: ThreadData.cc:43
VUserTaskQueue * current_queue
Definition: ThreadData.hh:115
TaskStack< VUserTaskQueue * > queue_stack
Definition: ThreadData.hh:116
ThreadPool * thread_pool
Definition: ThreadData.hh:114
task_queue_t * get_queue() const
Definition: ThreadPool.hh:135
Definition: AutoLock.hh:254