diff --git a/src/utils/MessageQueue.cc b/src/utils/MessageQueue.cc index 0e7f1e19..af7c6012 100644 --- a/src/utils/MessageQueue.cc +++ b/src/utils/MessageQueue.cc @@ -45,10 +45,7 @@ class LoopQueueGuard { q.erase(queue_); } - { - std::unique_lock lk(queue_->queueMutex_); - queue_->workerCount_--; - } + queue_->workerCount_--; queue_->workerQuitCondition_.notify_all(); } diff --git a/src/utils/MessageQueue.h b/src/utils/MessageQueue.h index 02ec9e53..5569a1a9 100644 --- a/src/utils/MessageQueue.h +++ b/src/utils/MessageQueue.h @@ -223,7 +223,7 @@ class MessageQueue { std::condition_variable queueNotFullCondition_; std::deque queue_; std::atomic_int32_t messageIdCounter_; - size_t workerCount_; + std::atomic_uint32_t workerCount_; std::condition_variable workerQuitCondition_; std::shared_ptr supervisor_;