From 1ee3d1a3a3ac885e94ff9995f102b0a30d225023 Mon Sep 17 00:00:00 2001 From: HÃ¥vard Pettersen Date: Fri, 11 Mar 2022 14:09:54 +0000 Subject: fix tsan warnings --- vespalog/src/test/threads/testthreads.cpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'vespalog') 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 #include #include +#include #include #include #include @@ -19,29 +20,29 @@ LOG_SETUP(".threadtest"); class FileThread : public FastOS_Runnable { - bool _done; + std::atomic _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 _done; public: - bool _useLogBuffer; + std::atomic _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) { -- cgit v1.2.3