Skip to content

Commit 50c89a1

Browse files
committed
[perf] opti all parallel consumer, wake up all when para matrix size is small
1 parent 513d16c commit 50c89a1

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

src/GraphCtrl/GraphElement/_GEngine/GDynamicEngine/GDynamicEngine.cpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -236,17 +236,19 @@ CVoid GDynamicEngine::parallelRunAll() {
236236
#else
237237
CVoid GDynamicEngine::parallelRunAll() {
238238
parallel_run_num_ = 0;
239-
for (int i = 0; i < parallel_element_matrix_.size(); i++) {
239+
for (CIndex i = 0; i < (CIndex)parallel_element_matrix_.size(); i++) {
240240
const auto& curArr = parallel_element_matrix_[i];
241241
for (auto element : curArr) {
242-
thread_pool_->executeWithTid([this, element] {
243-
parallelRunOne(element); },
244-
1 == parallel_element_matrix_.size() ? CGRAPH_SECONDARY_THREAD_COMMON_ID : i,
245-
element == curArr.front() || element == curArr.back(),
246-
element == curArr.front());
242+
thread_pool_->executeWithTid([this, element] { parallelRunOne(element); }, i,
243+
element == curArr.front() || element == curArr.back(),
244+
element == curArr.front());
247245
}
248246
}
249-
thread_pool_->wakeupAllThread();
247+
248+
if (parallel_element_matrix_.size() < (CSize)(thread_pool_->getConfig().default_thread_size_)) {
249+
// 确保所有的 pt 都可以被唤醒,从而快速执行
250+
thread_pool_->wakeupAllThread();
251+
}
250252

251253
{
252254
CGRAPH_UNIQUE_LOCK lock(locker_.mtx_);

0 commit comments

Comments
 (0)