aboutsummaryrefslogtreecommitdiff
path: root/src/zenutil/workerpools.cpp
diff options
context:
space:
mode:
authorzousar <[email protected]>2023-12-07 08:48:04 -0700
committerGitHub <[email protected]>2023-12-07 08:48:04 -0700
commit6229149482f00893afa6874cc75d5e5ed0c438a9 (patch)
tree531317314903da569eea099c4a07e721de659b93 /src/zenutil/workerpools.cpp
parentChange naming to ChunkInfos instead of Chunks (diff)
parentUpdate CHANGELOG.md (diff)
downloadzen-zs/get-all-chunk-infos.tar.xz
zen-zs/get-all-chunk-infos.zip
Merge branch 'main' into zs/get-all-chunk-infoszs/get-all-chunk-infos
Diffstat (limited to 'src/zenutil/workerpools.cpp')
-rw-r--r--src/zenutil/workerpools.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/zenutil/workerpools.cpp b/src/zenutil/workerpools.cpp
index b511b0c5c..3ae302064 100644
--- a/src/zenutil/workerpools.cpp
+++ b/src/zenutil/workerpools.cpp
@@ -14,6 +14,8 @@ namespace {
const int LargeWorkerThreadPoolTreadCount = gsl::narrow<int>(std::thread::hardware_concurrency());
const int SmallWorkerThreadPoolTreadCount = gsl::narrow<int>(Max((std::thread::hardware_concurrency() / 4u), 1u));
+ static bool IsShutDown = false;
+
RwLock PoolLock;
std::unique_ptr<WorkerThreadPool> LargeWorkerPool;
@@ -32,6 +34,7 @@ GetLargeWorkerPool()
}
}
RwLock::ExclusiveLockScope _(PoolLock);
+ ZEN_ASSERT(!IsShutDown);
if (LargeWorkerPool)
{
return *LargeWorkerPool;
@@ -51,6 +54,7 @@ GetSmallWorkerPool()
}
}
RwLock::ExclusiveLockScope _(PoolLock);
+ ZEN_ASSERT(!IsShutDown);
if (SmallWorkerPool)
{
return *SmallWorkerPool;
@@ -70,6 +74,7 @@ GetSyncWorkerPool()
}
}
RwLock::ExclusiveLockScope _(PoolLock);
+ ZEN_ASSERT(!IsShutDown);
if (SyncWorkerPool)
{
return *SyncWorkerPool;
@@ -82,6 +87,7 @@ void
ShutdownWorkerPools()
{
RwLock::ExclusiveLockScope _(PoolLock);
+ IsShutDown = true;
LargeWorkerPool.reset();
SmallWorkerPool.reset();
SyncWorkerPool.reset();