diff options
author | Håvard Pettersen <havardpe@yahooinc.com> | 2022-05-19 13:31:54 +0000 |
---|---|---|
committer | Håvard Pettersen <havardpe@yahooinc.com> | 2022-05-19 13:31:54 +0000 |
commit | fea9d26940aa29aff66d4283f6761f681712a085 (patch) | |
tree | 611c90cfb288610fafeb8b17e825eaecf3986a8a | |
parent | f17c4fe7de4c55f5c4ee61897eab8c2f588d8405 (diff) |
make close flag in reply gate atomic
-rw-r--r-- | messagebus/src/vespa/messagebus/replygate.cpp | 4 | ||||
-rw-r--r-- | messagebus/src/vespa/messagebus/replygate.h | 3 |
2 files changed, 4 insertions, 3 deletions
diff --git a/messagebus/src/vespa/messagebus/replygate.cpp b/messagebus/src/vespa/messagebus/replygate.cpp index 1b37a542d49..d1bd6ef05c7 100644 --- a/messagebus/src/vespa/messagebus/replygate.cpp +++ b/messagebus/src/vespa/messagebus/replygate.cpp @@ -22,13 +22,13 @@ ReplyGate::handleMessage(Message::UP msg) void ReplyGate::close() { - _open = false; + _open.store(false, std::memory_order_relaxed); } void ReplyGate::handleReply(Reply::UP reply) { - if (_open) { + if (_open.load(std::memory_order_relaxed)) { IReplyHandler &handler = reply->getCallStack().pop(*reply); handler.handleReply(std::move(reply)); } else { diff --git a/messagebus/src/vespa/messagebus/replygate.h b/messagebus/src/vespa/messagebus/replygate.h index d432afa4b8b..0c487de3ecf 100644 --- a/messagebus/src/vespa/messagebus/replygate.h +++ b/messagebus/src/vespa/messagebus/replygate.h @@ -6,6 +6,7 @@ #include "imessagehandler.h" #include "ireplyhandler.h" #include <vespa/vespalib/util/referencecounter.h> +#include <atomic> namespace mbus { @@ -26,7 +27,7 @@ class ReplyGate : public vespalib::ReferenceCounter, { private: IMessageHandler &_sender; - bool _open; + std::atomic<bool> _open; public: /** |