Geant4-11
source
externals
ptl
src
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
#include "
PTL/Globals.hh
"
33
#include "
PTL/Task.hh
"
34
#include "
PTL/TaskRunManager.hh
"
35
#include "
PTL/ThreadData.hh
"
36
#include "
PTL/ThreadPool.hh
"
37
#include "
PTL/VTask.hh
"
38
39
//======================================================================================//
40
41
namespace
PTL
42
{
43
namespace
internal
44
{
45
std::atomic_uintmax_t&
46
task_group_counter
()
47
{
48
static
std::atomic_uintmax_t _instance(0);
49
return
_instance;
50
}
51
52
ThreadPool
*
53
get_default_threadpool
()
54
{
55
if
(
TaskRunManager::GetMasterRunManager
())
56
return
TaskRunManager::GetMasterRunManager
()->
GetThreadPool
();
57
return
nullptr
;
58
}
59
60
intmax_t
61
get_task_depth
()
62
{
63
return
(
ThreadData::GetInstance
()) ?
ThreadData::GetInstance
()->
task_depth
: 0;
64
}
65
}
// namespace internal
66
}
// namespace PTL
67
68
//======================================================================================//
Globals.hh
TaskGroup.hh
TaskRunManager.hh
Task.hh
ThreadData.hh
ThreadPool.hh
VTask.hh
PTL::TaskRunManager::GetMasterRunManager
static TaskRunManager * GetMasterRunManager(bool useTBB=false)
Definition:
TaskRunManager.cc:49
PTL::TaskRunManager::GetThreadPool
ThreadPool * GetThreadPool() const
Definition:
TaskRunManager.hh:71
PTL::ThreadData::GetInstance
static ThreadData *& GetInstance()
Definition:
ThreadData.cc:35
PTL::ThreadData::task_depth
intmax_t task_depth
Definition:
ThreadData.hh:146
PTL::ThreadPool
Definition:
ThreadPool.hh:69
PTL::internal::get_task_depth
intmax_t get_task_depth()
Definition:
TaskGroup.cc:61
PTL::internal::get_default_threadpool
ThreadPool * get_default_threadpool()
Definition:
TaskGroup.cc:53
PTL::internal::task_group_counter
std::atomic_uintmax_t & task_group_counter()
Definition:
TaskGroup.cc:46
PTL
Definition:
AutoLock.hh:254
Generated by
1.9.3