Geant4 Cross Reference |
1 // 1 2 // MIT License 3 // Copyright (c) 2020 Jonathan R. Madsen 4 // Permission is hereby granted, free of charg 5 // of this software and associated documentati 6 // in the Software without restriction, includ 7 // to use, copy, modify, merge, publish, distr 8 // copies of the Software, and to permit perso 9 // furnished to do so, subject to the followin 10 // The above copyright notice and this permiss 11 // all copies or substantial portions of the S 12 // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPR 13 // LIMITED TO THE WARRANTIES OF MERCHANTABILIT 14 // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SH 15 // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 16 // ACTION OF CONTRACT, TORT OR OTHERWISE, ARIS 17 // WITH THE SOFTWARE OR THE USE OR OTHER DEALI 18 // 19 // ------------------------------------------- 20 // Tasking class implementation 21 // 22 // Class Description: 23 // 24 // This file creates an abstract base class fo 25 // tasking system into independently joinable 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 36 //============================================ 37 38 namespace PTL 39 { 40 namespace internal 41 { 42 std::atomic_uintmax_t& 43 task_group_counter() 44 { 45 static std::atomic_uintmax_t _instance(0); 46 return _instance; 47 } 48 49 ThreadPool* 50 get_default_threadpool() 51 { 52 auto* mrm = TaskRunManager::GetMasterRunMa 53 if(mrm) 54 { 55 if(!mrm->GetThreadPool()) 56 mrm->Initialize(); 57 return mrm->GetThreadPool(); 58 } 59 return nullptr; 60 } 61 62 intmax_t 63 get_task_depth() 64 { 65 return (ThreadData::GetInstance()) ? Threa 66 } 67 } // namespace internal 68 } // namespace PTL 69 70 //============================================ 71