diff options
author | Håvard Pettersen <havardpe@oath.com> | 2022-03-07 09:57:29 +0000 |
---|---|---|
committer | Håvard Pettersen <havardpe@oath.com> | 2022-03-07 09:57:29 +0000 |
commit | d478651c4931953f14ba643676d712eafb985774 (patch) | |
tree | b926231efcff67989380b2f7a7ec312bea80b65a /vespalib | |
parent | 5ead84bb17aa1ebb39d934d9b74d2d6ef758d566 (diff) |
use atomic to make tsan happy
Diffstat (limited to 'vespalib')
-rw-r--r-- | vespalib/src/vespa/vespalib/util/signalhandler.cpp | 6 | ||||
-rw-r--r-- | vespalib/src/vespa/vespalib/util/signalhandler.h | 3 |
2 files changed, 5 insertions, 4 deletions
diff --git a/vespalib/src/vespa/vespalib/util/signalhandler.cpp b/vespalib/src/vespa/vespalib/util/signalhandler.cpp index cd3e900ffe7..5f361ee3b01 100644 --- a/vespalib/src/vespa/vespalib/util/signalhandler.cpp +++ b/vespalib/src/vespa/vespalib/util/signalhandler.cpp @@ -59,7 +59,7 @@ SignalHandler::handleSignal(int signal) void SignalHandler::gotSignal() { - _gotSignal = 1; + _gotSignal.store(1, std::memory_order_relaxed); } SignalHandler::SignalHandler(int signal) @@ -97,13 +97,13 @@ SignalHandler::ignore() bool SignalHandler::check() const { - return (_gotSignal != 0); + return (_gotSignal.load(std::memory_order_relaxed) != 0); } void SignalHandler::clear() { - _gotSignal = 0; + _gotSignal.store(0, std::memory_order_relaxed); } void diff --git a/vespalib/src/vespa/vespalib/util/signalhandler.h b/vespalib/src/vespa/vespalib/util/signalhandler.h index abd9a8bc572..70abef00058 100644 --- a/vespalib/src/vespa/vespalib/util/signalhandler.h +++ b/vespalib/src/vespa/vespalib/util/signalhandler.h @@ -3,6 +3,7 @@ #include <csignal> #include <vector> +#include <atomic> namespace vespalib { @@ -35,7 +36,7 @@ private: * State indicating if the signal handled by this signal handler * has been caught. **/ - volatile sig_atomic_t _gotSignal; + std::atomic<int> _gotSignal; /** * Common signal handler for all caught signals. This method will |