Geant4 11.2.2
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
39namespace PTL
40{
41namespace internal
42{
43std::atomic_uintmax_t&
45{
46 static std::atomic_uintmax_t _instance(0);
47 return _instance;
48}
49
52{
54 if(mrm)
55 {
56 if(!mrm->GetThreadPool())
57 mrm->Initialize();
58 return mrm->GetThreadPool();
59 }
60 return nullptr;
61}
62
63intmax_t
68} // namespace internal
69} // namespace PTL
70
71//======================================================================================//
static TaskRunManager * GetMasterRunManager(bool useTBB=false)
static ThreadData *& GetInstance()
Definition ThreadData.cc:32
intmax_t task_depth
intmax_t get_task_depth()
Definition TaskGroup.cc:64
ThreadPool * get_default_threadpool()
Definition TaskGroup.cc:51
std::atomic_uintmax_t & task_group_counter()
Definition TaskGroup.cc:44