From 3ea4d22e714092d3600c268feb8abf4d4c5c7fd6 Mon Sep 17 00:00:00 2001 From: HÃ¥vard Pettersen Date: Thu, 16 Feb 2023 10:26:19 +0000 Subject: use fastos thread less --- vespalog/src/test/threads/testthreads.cpp | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) (limited to 'vespalog') diff --git a/vespalog/src/test/threads/testthreads.cpp b/vespalog/src/test/threads/testthreads.cpp index ed2683b5c35..0c9b3a1cdb2 100644 --- a/vespalog/src/test/threads/testthreads.cpp +++ b/vespalog/src/test/threads/testthreads.cpp @@ -1,5 +1,4 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include #include #include #include @@ -10,6 +9,7 @@ #include #include #include +#include using std::string; using namespace std::chrono_literals; @@ -17,28 +17,28 @@ using namespace std::chrono; LOG_SETUP(".threadtest"); -class FileThread : public FastOS_Runnable +class FileThread { std::atomic _done; string _file; public: FileThread(string file) : _done(false), _file(file) {} - void Run(FastOS_ThreadInterface *thread, void *arg) override; + void entry(); void stop() { _done.store(true, std::memory_order_relaxed); } }; -class LoggerThread : public FastOS_Runnable +class LoggerThread { std::atomic _done; public: std::atomic _useLogBuffer; LoggerThread() : _done(false), _useLogBuffer(false) {} - void Run(FastOS_ThreadInterface *thread, void *arg) override; + void entry(); void stop() { _done.store(true, std::memory_order_relaxed); } }; void -FileThread::Run(FastOS_ThreadInterface *, void *) +FileThread::entry() { unlink(_file.c_str()); while (!_done.load(std::memory_order_relaxed)) { @@ -63,7 +63,7 @@ FileThread::Run(FastOS_ThreadInterface *, void *) void -LoggerThread::Run(FastOS_ThreadInterface *, void *) +LoggerThread::entry() { int counter = 0; while (!_done.load(std::memory_order_relaxed)) { @@ -89,11 +89,12 @@ public: } }; + int ThreadTester::Main() { std::cerr << "Testing that logging is threadsafe. 5 sec test.\n"; - FastOS_ThreadPool pool; + std::vector threads; const int numWriters = 30; const int numLoggers = 10; @@ -105,11 +106,11 @@ ThreadTester::Main() char filename[100]; snprintf(filename, sizeof(filename), "empty.%d", i); writers[i] = std::make_unique(filename); - pool.NewThread(writers[i].get()); + threads.emplace_back([obj = writers[i].get()](){ obj->entry(); }); } for (int i = 0; i < numLoggers; i++) { loggers[i] = std::make_unique(); - pool.NewThread(loggers[i].get()); + threads.emplace_back([obj = loggers[i].get()](){ obj->entry(); }); } steady_clock::time_point start = steady_clock::now(); @@ -136,7 +137,9 @@ ThreadTester::Main() writers[i]->stop(); } - pool.Close(); + for (auto &thread: threads) { + thread.join(); + } return 0; } -- cgit v1.2.3