aboutsummaryrefslogtreecommitdiff
path: root/src/zenutil/parallelwork.cpp
diff options
context:
space:
mode:
authorzousar <[email protected]>2025-08-05 14:58:08 -0600
committerzousar <[email protected]>2025-08-05 14:58:08 -0600
commit7ddededb31c9b3415d4d85f0b284e5bf45c723b9 (patch)
treee908f97766720550b7d3d4e8553b3c83132c0735 /src/zenutil/parallelwork.cpp
parentxmake precommit (diff)
parentde/stringbuilder safety (#456) (diff)
downloadzen-7ddededb31c9b3415d4d85f0b284e5bf45c723b9.tar.xz
zen-7ddededb31c9b3415d4d85f0b284e5bf45c723b9.zip
Merge branch 'main' into zs/put-overwrite-policy
Diffstat (limited to 'src/zenutil/parallelwork.cpp')
-rw-r--r--src/zenutil/parallelwork.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/zenutil/parallelwork.cpp b/src/zenutil/parallelwork.cpp
index aa806438b..1edca5050 100644
--- a/src/zenutil/parallelwork.cpp
+++ b/src/zenutil/parallelwork.cpp
@@ -33,6 +33,7 @@ ParallelWork::~ParallelWork()
"ParallelWork disposed without explicit wait for completion, likely caused by an exception, waiting for dispatched threads "
"to complete");
m_PendingWork.CountDown();
+ m_DispatchComplete = true;
}
m_PendingWork.Wait();
ptrdiff_t RemainingWork = m_PendingWork.Remaining();
@@ -82,10 +83,9 @@ void
ParallelWork::Wait(int32_t UpdateIntervalMS, UpdateCallback&& UpdateCallback)
{
ZEN_ASSERT(!m_DispatchComplete);
- m_DispatchComplete = true;
-
ZEN_ASSERT(m_PendingWork.Remaining() > 0);
m_PendingWork.CountDown();
+ m_DispatchComplete = true;
while (!m_PendingWork.Wait(UpdateIntervalMS))
{
@@ -99,10 +99,10 @@ void
ParallelWork::Wait()
{
ZEN_ASSERT(!m_DispatchComplete);
- m_DispatchComplete = true;
-
ZEN_ASSERT(m_PendingWork.Remaining() > 0);
m_PendingWork.CountDown();
+ m_DispatchComplete = true;
+
m_PendingWork.Wait();
RethrowErrors();