From 99dbd1196e9ff84192185cf559e7bfaec6466be8 Mon Sep 17 00:00:00 2001 From: yeshenyong <52573793+yeshenyong@users.noreply.github.com> Date: Sun, 1 Mar 2026 13:32:33 +0800 Subject: [PATCH 1/2] [bugfix] fix node exception notify miss (#581) --- .../_GEngine/GDynamicEngine/GDynamicEngine.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/GraphCtrl/GraphElement/_GEngine/GDynamicEngine/GDynamicEngine.cpp b/src/GraphCtrl/GraphElement/_GEngine/GDynamicEngine/GDynamicEngine.cpp index 2ce93873..602d4e02 100644 --- a/src/GraphCtrl/GraphElement/_GEngine/GDynamicEngine/GDynamicEngine.cpp +++ b/src/GraphCtrl/GraphElement/_GEngine/GDynamicEngine/GDynamicEngine.cpp @@ -143,8 +143,11 @@ CVoid GDynamicEngine::innerExec(GElementPtr element) { afterElementRun(element); } else { // 遇到异常情况,结束整体逻辑 - CGRAPH_LOCK_GUARD lk(status_lock_); - cur_status_ += curStatus; + { + CGRAPH_LOCK_GUARD lk(status_lock_); + cur_status_ += curStatus; + } + CGRAPH_LOCK_GUARD lk(locker_.mtx_); locker_.cv_.notify_one(); } } From 418c87c0201e45dbe5ab8882d6344233a6eb5946 Mon Sep 17 00:00:00 2001 From: Chunel Date: Sun, 1 Mar 2026 14:16:11 +0800 Subject: [PATCH 2/2] [perf] optimise dynamic engine error status notify --- .../_GEngine/GDynamicEngine/GDynamicEngine.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/GraphCtrl/GraphElement/_GEngine/GDynamicEngine/GDynamicEngine.cpp b/src/GraphCtrl/GraphElement/_GEngine/GDynamicEngine/GDynamicEngine.cpp index 602d4e02..908529f7 100644 --- a/src/GraphCtrl/GraphElement/_GEngine/GDynamicEngine/GDynamicEngine.cpp +++ b/src/GraphCtrl/GraphElement/_GEngine/GDynamicEngine/GDynamicEngine.cpp @@ -121,7 +121,7 @@ CVoid GDynamicEngine::analysisParallelMatrix() { } -CVoid GDynamicEngine::process(GElementPtr element, CBool affinity) { +CVoid GDynamicEngine::process(GElementPtr element, const CBool affinity) { if (unlikely(cur_status_.isErr())) { return; } @@ -147,7 +147,6 @@ CVoid GDynamicEngine::innerExec(GElementPtr element) { CGRAPH_LOCK_GUARD lk(status_lock_); cur_status_ += curStatus; } - CGRAPH_LOCK_GUARD lk(locker_.mtx_); locker_.cv_.notify_one(); } } @@ -193,8 +192,11 @@ CVoid GDynamicEngine::afterElementRun(GElementPtr element) { } break; default: - CGRAPH_LOCK_GUARD lk(status_lock_); - cur_status_.setErrorInfo("element shape type error"); + { + CGRAPH_LOCK_GUARD lk(status_lock_); + cur_status_.setErrorInfo("element shape type error"); + } + locker_.cv_.notify_one(); break; } } @@ -240,7 +242,7 @@ CVoid GDynamicEngine::parallelRunAll() { for (CIndex i = 0; i < totalSize; i++) { auto& curArr = parallel_element_matrix_[i]; if (curArr.size() > 1) { - for (const auto& element : curArr) { + for (auto* element : curArr) { thread_pool_->executeWithTid([this, element] { parallelRunOne(element); }, i, element == curArr.front() || element == curArr.back(), element == curArr.front());