Geant4
11.1.1
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
TaskGroup.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
// Class Description:
23
//
24
// This file creates an abstract base class for the grouping the thread-pool
25
// tasking system into independently joinable units
26
//
27
// ---------------------------------------------------------------
28
// Author: Jonathan Madsen (Feb 13th 2018)
29
// ---------------------------------------------------------------
30
31
#include "
PTL/TaskGroup.hh
"
32
33
#include "
PTL/TaskRunManager.hh
"
34
#include "
PTL/ThreadData.hh
"
35
#include "
PTL/ThreadPool.hh
"
36
37
//======================================================================================//
38
39
namespace
PTL
40
{
41
namespace
internal
42
{
43
std::atomic_uintmax_t&
44
task_group_counter
()
45
{
46
static
std::atomic_uintmax_t _instance(0);
47
return
_instance;
48
}
49
50
ThreadPool
*
51
get_default_threadpool
()
52
{
53
auto
* mrm =
TaskRunManager::GetMasterRunManager
();
54
if
(mrm)
55
{
56
if
(!mrm->GetThreadPool())
57
mrm->Initialize();
58
return
mrm->GetThreadPool();
59
}
60
return
nullptr
;
61
}
62
63
intmax_t
64
get_task_depth
()
65
{
66
return
(
ThreadData::GetInstance
()) ?
ThreadData::GetInstance
()->
task_depth
: 0;
67
}
68
}
// namespace internal
69
}
// namespace PTL
70
71
//======================================================================================//
TaskGroup.hh
TaskRunManager.hh
ThreadData.hh
ThreadPool.hh
PTL::TaskRunManager::GetMasterRunManager
static TaskRunManager * GetMasterRunManager(bool useTBB=false)
Definition:
TaskRunManager.cc:60
PTL::ThreadData::GetInstance
static ThreadData *& GetInstance()
Definition:
ThreadData.cc:32
PTL::ThreadData::task_depth
intmax_t task_depth
Definition:
ThreadData.hh:150
PTL::ThreadPool
Definition:
ThreadPool.hh:88
PTL::internal::get_task_depth
intmax_t get_task_depth()
Definition:
TaskGroup.cc:64
PTL::internal::get_default_threadpool
ThreadPool * get_default_threadpool()
Definition:
TaskGroup.cc:51
PTL::internal::task_group_counter
std::atomic_uintmax_t & task_group_counter()
Definition:
TaskGroup.cc:44
PTL
Definition:
AutoLock.hh:255
geant4-v11.1.1
source
externals
ptl
src
TaskGroup.cc
Generated by
1.9.6