Geant4
10.7.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
VUserTaskQueue.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
// Class Description:
22
// Abstract base class for creating a task queue used by
23
// ThreadPool
24
// ---------------------------------------------------------------
25
// Author: Jonathan Madsen
26
// ---------------------------------------------------------------
27
28
#include "
PTL/VUserTaskQueue.hh
"
29
#include "
PTL/TaskRunManager.hh
"
30
31
using namespace
PTL
;
32
33
//======================================================================================//
34
35
VUserTaskQueue::VUserTaskQueue
(intmax_t nworkers)
36
: m_workers(nworkers)
37
{
38
if
(
m_workers
< 0)
39
{
40
TaskRunManager
* rm =
TaskRunManager::GetMasterRunManager
();
41
m_workers
= (rm) ? rm->
GetNumberOfThreads
() + 1
// number of threads + 1
42
: (2 * std::thread::hardware_concurrency()) + 1;
43
// hyperthreads + 1
44
}
45
}
46
47
//======================================================================================//
48
49
VUserTaskQueue::~VUserTaskQueue
() {}
50
51
//======================================================================================//
52
/*
53
intmax_t& VUserTaskQueue::ThisThreadNumber() const
54
{
55
// get a thread id number
56
static thread_local intmax_t _tid;
57
return _tid;
58
}
59
*/
60
//======================================================================================//
TaskRunManager.hh
VUserTaskQueue.hh
PTL::TaskRunManager
Definition:
TaskRunManager.hh:45
PTL::TaskRunManager::GetNumberOfThreads
virtual int GetNumberOfThreads() const
Definition:
TaskRunManager.hh:58
PTL::TaskRunManager::GetMasterRunManager
static TaskRunManager * GetMasterRunManager(bool useTBB=false)
Definition:
TaskRunManager.cc:49
PTL::VUserTaskQueue::~VUserTaskQueue
virtual ~VUserTaskQueue()
Definition:
VUserTaskQueue.cc:49
PTL::VUserTaskQueue::VUserTaskQueue
VUserTaskQueue(intmax_t nworkers=-1)
Definition:
VUserTaskQueue.cc:35
PTL::VUserTaskQueue::m_workers
intmax_t m_workers
Definition:
VUserTaskQueue.hh:212
PTL
Definition:
AutoLock.hh:254
geant4-v10.7.0
source
externals
ptl
src
VUserTaskQueue.cc
Generated by
1.9.6