diff --git a/src/core/include/megbrain/utils/thread_impl_1.h b/src/core/include/megbrain/utils/thread_impl_1.h index 9f2abcefa235a2574914d83a911bb367f69512b3..ed59ef26abeceb169aa43e064bcd8529ffe147bf 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;