Geant4-11
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
41namespace PTL
42{
43namespace internal
44{
45std::atomic_uintmax_t&
47{
48 static std::atomic_uintmax_t _instance(0);
49 return _instance;
50}
51
54{
57 return nullptr;
58}
59
60intmax_t
62{
64}
65} // namespace internal
66} // namespace PTL
67
68//======================================================================================//
static TaskRunManager * GetMasterRunManager(bool useTBB=false)
ThreadPool * GetThreadPool() const
static ThreadData *& GetInstance()
Definition: ThreadData.cc:35
intmax_t task_depth
Definition: ThreadData.hh:146
intmax_t get_task_depth()
Definition: TaskGroup.cc:61
ThreadPool * get_default_threadpool()
Definition: TaskGroup.cc:53
std::atomic_uintmax_t & task_group_counter()
Definition: TaskGroup.cc:46
Definition: AutoLock.hh:254