From d13b6a4a51edcec2cd64924bf9b75398ab107c4f Mon Sep 17 00:00:00 2001 From: Megvii Engine Team Date: Wed, 24 Mar 2021 15:10:50 +0800 Subject: [PATCH] fix(mgb/core): fix allocate_task_block_unsafe in thread_impl_1.h GitOrigin-RevId: 21b92fafc5c96a26f8298f6be83da71072814a92 --- src/core/include/megbrain/utils/thread_impl_1.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/core/include/megbrain/utils/thread_impl_1.h b/src/core/include/megbrain/utils/thread_impl_1.h index 9f2abcefa..ed59ef26a 100644 --- a/src/core/include/megbrain/utils/thread_impl_1.h +++ b/src/core/include/megbrain/utils/thread_impl_1.h @@ -365,14 +365,16 @@ namespace mgb { if (!m_free_task_block.empty()) { ret = std::move(m_free_task_block.back()); m_free_task_block.pop_back(); + break; } else if (m_block_quota > 0) { ret = std::make_unique(); m_block_quota--; + break; } else { m_cv.wait(m_mutex); continue; } - } while (false); + } while (true); ret->first_tid = m_new_block_first_tid; m_new_block_first_tid += BLOCK_SIZE; ret->prev = prev; -- GitLab