Init GlobalThreadPool in a thread safe manner

This commit is contained in:
Silent committed 2019-08-11 14:03:54 +02:00
1 parent 4da4e6a97a
commit 86a887d7b0
2 files changed
+7 -9

No files matched your search

+5 -7
View File
@@ -1,18 +1,16 @@
#include "ThreadPools.h"
#include "../Core/Config.h"
#include "Common/MakeUnique.h"
std::shared_ptr<ThreadPool> GlobalThreadPool::pool;
bool GlobalThreadPool::initialized = false;
std::unique_ptr<ThreadPool> GlobalThreadPool::pool;
std::once_flag GlobalThreadPool::init_flag;
void GlobalThreadPool::Loop(const std::function<void(int,int)>& loop, int lower, int upper) {
Inititialize();
std::call_once(init_flag, Inititialize);
pool->ParallelLoop(loop, lower, upper);
}
void GlobalThreadPool::Inititialize() {
if(!initialized) {
pool = std::make_shared<ThreadPool>(g_Config.iNumWorkerThreads);
initialized = true;
}
pool = make_unique<ThreadPool>(g_Config.iNumWorkerThreads);
}