diff options
author | Håvard Pettersen <havardpe@oath.com> | 2022-03-11 14:09:54 +0000 |
---|---|---|
committer | Håvard Pettersen <havardpe@oath.com> | 2022-03-11 14:09:54 +0000 |
commit | 1ee3d1a3a3ac885e94ff9995f102b0a30d225023 (patch) | |
tree | 51f1a068b9fcb7dacad293a1650abbe959608a55 /vespalog | |
parent | 8ac729bfc96efed68edce944e3401c4b9b0f7eaf (diff) |
fix tsan warnings
Diffstat (limited to 'vespalog')
-rw-r--r-- | vespalog/src/test/threads/testthreads.cpp | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/vespalog/src/test/threads/testthreads.cpp b/vespalog/src/test/threads/testthreads.cpp index f95db5ecc10..af0fe509080 100644 --- a/vespalog/src/test/threads/testthreads.cpp +++ b/vespalog/src/test/threads/testthreads.cpp @@ -6,6 +6,7 @@ #include <iostream> #include <thread> #include <chrono> +#include <atomic> #include <fcntl.h> #include <unistd.h> #include <sys/stat.h> @@ -19,29 +20,29 @@ LOG_SETUP(".threadtest"); class FileThread : public FastOS_Runnable { - bool _done; + std::atomic<bool> _done; string _file; public: FileThread(string file) : _done(false), _file(file) {} void Run(FastOS_ThreadInterface *thread, void *arg) override; - void stop() {_done = true; } + void stop() { _done.store(true, std::memory_order_relaxed); } }; class LoggerThread : public FastOS_Runnable { - bool _done; + std::atomic<bool> _done; public: - bool _useLogBuffer; + std::atomic<bool> _useLogBuffer; LoggerThread() : _done(false), _useLogBuffer(false) {} void Run(FastOS_ThreadInterface *thread, void *arg) override; - void stop() {_done = true; } + void stop() { _done.store(true, std::memory_order_relaxed); } }; void FileThread::Run(FastOS_ThreadInterface *, void *) { unlink(_file.c_str()); - while (!_done) { + while (!_done.load(std::memory_order_relaxed)) { int fd = open(_file.c_str(), O_RDWR | O_CREAT | O_APPEND, 0644); if (fd == -1) { fprintf(stderr, "open failed: %s\n", strerror(errno)); @@ -66,8 +67,8 @@ void LoggerThread::Run(FastOS_ThreadInterface *, void *) { int counter = 0; - while (!_done) { - if (_useLogBuffer) { + while (!_done.load(std::memory_order_relaxed)) { + if (_useLogBuffer.load(std::memory_order_relaxed)) { LOGBM(info, "bla bla bla %u", ++counter); } else { LOG(info, "bla bla bla"); @@ -114,7 +115,7 @@ ThreadTester::Main() } // Then set to use logbuffer and continue for (int i = 0; i < numLoggers; i++) { - loggers[i]->_useLogBuffer = true; + loggers[i]->_useLogBuffer.store(true, std::memory_order_relaxed); } start = steady_clock::now(); while ((steady_clock::now() - start) < 2.5s) { |