5 #include "tbb/task_scheduler_init.h"
12 std::weak_ptr<TPoolManager> &GetWP()
14 static std::weak_ptr<TPoolManager> weak_sched;
18 UInt_t TPoolManager::fgPoolSize = 0;
20 TPoolManager::TPoolManager(UInt_t nThreads): fSched(new tbb::task_scheduler_init(tbb::task_scheduler_init::deferred))
23 if (fSched->is_active()) {
27 nThreads = nThreads != 0 ? nThreads : tbb::task_scheduler_init::default_num_threads();
28 fSched ->initialize(nThreads);
29 fgPoolSize = nThreads;
32 TPoolManager::~TPoolManager()
43 UInt_t TPoolManager::GetPoolSize()
49 std::shared_ptr<TPoolManager> GetPoolManager(UInt_t nThreads)
51 if (GetWP().expired()) {
52 std::shared_ptr<TPoolManager> shared(
new TPoolManager(nThreads));
54 return GetWP().lock();
56 return GetWP().lock();