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
30
using namespace
PTL
;
31
32
//======================================================================================//
33
34
ThreadData
*&
35
ThreadData::GetInstance
()
36
{
37
static
thread_local
ThreadData
* _instance =
nullptr
;
38
return
_instance;
39
}
40
41
//======================================================================================//
42
43
ThreadData::ThreadData
(
ThreadPool
* tp)
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
54
void
55
ThreadData::update
()
56
{
57
current_queue
=
thread_pool
->
get_queue
();
58
queue_stack
.push_back(
current_queue
);
59
}
60
61
//======================================================================================//
62
63
ThreadData::~ThreadData
() {}
64
65
//======================================================================================//
ThreadData.hh
ThreadPool.hh
Threading.hh
VUserTaskQueue.hh
PTL::ThreadData
Definition:
ThreadData.hh:100
PTL::ThreadData::GetInstance
static ThreadData *& GetInstance()
Definition:
ThreadData.cc:35
PTL::ThreadData::ThreadData
ThreadData(ThreadPool *tp)
Definition:
ThreadData.cc:43
PTL::ThreadData::current_queue
VUserTaskQueue * current_queue
Definition:
ThreadData.hh:115
PTL::ThreadData::update
void update()
Definition:
ThreadData.cc:55
PTL::ThreadData::queue_stack
TaskStack< VUserTaskQueue * > queue_stack
Definition:
ThreadData.hh:116
PTL::ThreadData::~ThreadData
~ThreadData()
Definition:
ThreadData.cc:63
PTL::ThreadData::thread_pool
ThreadPool * thread_pool
Definition:
ThreadData.hh:114
PTL::ThreadPool
Definition:
ThreadPool.hh:64
PTL::ThreadPool::get_queue
task_queue_t * get_queue() const
Definition:
ThreadPool.hh:135
PTL
Definition:
AutoLock.hh:254
geant4-v10.7.0
source
externals
ptl
src
ThreadData.cc
Generated by
1.9.6