diff options
Diffstat (limited to 'src/mongo/executor/async_multicaster.cpp')
-rw-r--r-- | src/mongo/executor/async_multicaster.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/mongo/executor/async_multicaster.cpp b/src/mongo/executor/async_multicaster.cpp index 24e72527d51..3962f8f551d 100644 --- a/src/mongo/executor/async_multicaster.cpp +++ b/src/mongo/executor/async_multicaster.cpp @@ -37,8 +37,8 @@ #include "mongo/base/status.h" #include "mongo/db/operation_context.h" -#include "mongo/stdx/condition_variable.h" -#include "mongo/stdx/mutex.h" +#include "mongo/platform/condition_variable.h" +#include "mongo/platform/mutex.h" #include "mongo/util/assert_util.h" namespace mongo { @@ -60,7 +60,7 @@ std::vector<AsyncMulticaster::Reply> AsyncMulticaster::multicast( struct State { State(size_t leftToDo) : leftToDo(leftToDo) {} - stdx::mutex mutex; + Mutex mutex = MONGO_MAKE_LATCH("State::mutex"); stdx::condition_variable cv; size_t leftToDo; size_t running = 0; @@ -71,7 +71,7 @@ std::vector<AsyncMulticaster::Reply> AsyncMulticaster::multicast( auto state = std::make_shared<State>(servers.size()); for (const auto& server : servers) { - stdx::unique_lock<stdx::mutex> lk(state->mutex); + stdx::unique_lock<Latch> lk(state->mutex); // spin up no more than maxConcurrency tasks at once opCtx->waitForConditionOrInterrupt( state->cv, lk, [&] { return state->running < _options.maxConcurrency; }); @@ -80,7 +80,7 @@ std::vector<AsyncMulticaster::Reply> AsyncMulticaster::multicast( uassertStatusOK(_executor->scheduleRemoteCommand( RemoteCommandRequest{server, theDbName, theCmdObj, opCtx, timeoutMillis}, [state](const TaskExecutor::RemoteCommandCallbackArgs& cbData) { - stdx::lock_guard<stdx::mutex> lk(state->mutex); + stdx::lock_guard<Latch> lk(state->mutex); state->out.emplace_back( std::forward_as_tuple(cbData.request.target, cbData.response)); @@ -96,7 +96,7 @@ std::vector<AsyncMulticaster::Reply> AsyncMulticaster::multicast( })); } - stdx::unique_lock<stdx::mutex> lk(state->mutex); + stdx::unique_lock<Latch> lk(state->mutex); opCtx->waitForConditionOrInterrupt(state->cv, lk, [&] { return state->leftToDo == 0; }); return std::move(state->out); |