aboutsummaryrefslogtreecommitdiffstats
path: root/vespalog
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-02-17 17:20:35 +0100
committerGitHub <noreply@github.com>2023-02-17 17:20:35 +0100
commit805e24544b2b43abe28b77829de30930b3eea321 (patch)
treea05e1fe4bcaa6c9b2aa7f8550a0725991a70b3e6 /vespalog
parent083f5276f8b40c51e523b2a5ac00d5a1f40515b7 (diff)
parent3ea4d22e714092d3600c268feb8abf4d4c5c7fd6 (diff)
Merge pull request #26093 from vespa-engine/havardpe/use-less-fastos-thread
use fastos thread less
Diffstat (limited to 'vespalog')
-rw-r--r--vespalog/src/test/threads/testthreads.cpp25
1 files changed, 14 insertions, 11 deletions
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 <vespa/fastos/thread.h>
#include <vespa/log/bufferedlogger.h>
#include <array>
#include <iostream>
@@ -10,6 +9,7 @@
#include <unistd.h>
#include <sys/stat.h>
#include <cstdlib>
+#include <vector>
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<bool> _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<bool> _done;
public:
std::atomic<bool> _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<std::thread> 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<FileThread>(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<LoggerThread>();
- 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;
}