Move lock guard to start of addOperation to protect isClosed() and isFinishing()

This commit is contained in:
Simon 2016-09-07 21:46:32 -07:00
parent 61ea2abaf5
commit 69a4cb448a
1 changed files with 1 additions and 1 deletions

View File

@ -82,6 +82,7 @@ void AsyncRPCQueue::run(size_t workerId) {
* Don't use std::make_shared<AsyncRPCOperation>().
*/
void AsyncRPCQueue::addOperation(const std::shared_ptr<AsyncRPCOperation> &ptrOperation) {
std::lock_guard<std::mutex> guard(lock_);
// Don't add if queue is closed or finishing
if (isClosed() || isFinishing()) {
@ -89,7 +90,6 @@ void AsyncRPCQueue::addOperation(const std::shared_ptr<AsyncRPCOperation> &ptrOp
}
AsyncRPCOperationId id = ptrOperation->getId();
std::lock_guard< std::mutex > guard(lock_);
operation_map_.emplace(id, ptrOperation);
operation_id_queue_.push(id);
this->condition_.notify_one();