Geant4-11
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
31using namespace PTL;
32
33//======================================================================================//
34
35VUserTaskQueue::VUserTaskQueue(intmax_t nworkers)
36: m_workers(nworkers)
37{
38 if(m_workers < 0)
39 {
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//======================================================================================//
virtual int GetNumberOfThreads() const
static TaskRunManager * GetMasterRunManager(bool useTBB=false)
Definition: AutoLock.hh:254