summaryrefslogtreecommitdiffstats
path: root/vespalib
diff options
context:
space:
mode:
authorHåvard Pettersen <havardpe@oath.com>2022-03-07 09:57:29 +0000
committerHåvard Pettersen <havardpe@oath.com>2022-03-07 09:57:29 +0000
commitd478651c4931953f14ba643676d712eafb985774 (patch)
treeb926231efcff67989380b2f7a7ec312bea80b65a /vespalib
parent5ead84bb17aa1ebb39d934d9b74d2d6ef758d566 (diff)
use atomic to make tsan happy
Diffstat (limited to 'vespalib')
-rw-r--r--vespalib/src/vespa/vespalib/util/signalhandler.cpp6
-rw-r--r--vespalib/src/vespa/vespalib/util/signalhandler.h3
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