aboutsummaryrefslogtreecommitdiffstats
path: root/vbench
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-02-16 09:20:40 +0100
committerGitHub <noreply@github.com>2023-02-16 09:20:40 +0100
commitabb94528b80948696e29e58b569f84fb4c2f85b8 (patch)
treef12f74488b3a9cd0cb04fde7dd0a488450f89e9c /vbench
parente13645c831e7e4e00f5a12d57b0fc8f81f2bd3a9 (diff)
parent070fc34cee07db023824c76995bba43f2262d6c1 (diff)
Merge pull request #26055 from vespa-engine/havardpe/use-std-thread-directly
use std::thread directly
Diffstat (limited to 'vbench')
-rw-r--r--vbench/src/apps/vbench/vbench.cpp3
-rw-r--r--vbench/src/tests/dispatcher/dispatcher_test.cpp4
-rw-r--r--vbench/src/vbench/core/handler_thread.h2
-rw-r--r--vbench/src/vbench/core/handler_thread.hpp6
-rw-r--r--vbench/src/vbench/vbench/request_scheduler.cpp2
-rw-r--r--vbench/src/vbench/vbench/request_scheduler.h2
-rw-r--r--vbench/src/vbench/vbench/vbench.cpp2
-rw-r--r--vbench/src/vbench/vbench/vbench.h2
-rw-r--r--vbench/src/vbench/vbench/worker.cpp2
-rw-r--r--vbench/src/vbench/vbench/worker.h2
10 files changed, 15 insertions, 12 deletions
diff --git a/vbench/src/apps/vbench/vbench.cpp b/vbench/src/apps/vbench/vbench.cpp
index b5c2897207f..c73f38adaf2 100644
--- a/vbench/src/apps/vbench/vbench.cpp
+++ b/vbench/src/apps/vbench/vbench.cpp
@@ -44,12 +44,13 @@ int run(const std::string &cfg_name) {
VBench vbench(cfg);
NotifyDone notify(done);
vespalib::RunnablePair runBoth(vbench, notify);
- auto thread = vespalib::Thread::start(runBoth, vbench_thread);
+ auto thread = vespalib::thread::start(runBoth, vbench_thread);
while (!SIG::INT.check() && !SIG::TERM.check() && !done.await(1s)) {}
if (!done.await(vespalib::duration::zero())) {
vbench.abort();
done.await();
}
+ thread.join();
if (vbench.tainted()) {
fprintf(stderr, "vbench failed: %s\n",
vbench.tainted().reason().c_str());
diff --git a/vbench/src/tests/dispatcher/dispatcher_test.cpp b/vbench/src/tests/dispatcher/dispatcher_test.cpp
index 6a3fb8d0c7c..49a41508c7b 100644
--- a/vbench/src/tests/dispatcher/dispatcher_test.cpp
+++ b/vbench/src/tests/dispatcher/dispatcher_test.cpp
@@ -30,9 +30,9 @@ TEST("dispatcher") {
Dispatcher<int> dispatcher(dropped);
Fetcher fetcher1(dispatcher, handler1);
Fetcher fetcher2(dispatcher, handler2);
- auto thread1 = vespalib::Thread::start(fetcher1, fetcher1_thread);
+ auto thread1 = vespalib::thread::start(fetcher1, fetcher1_thread);
EXPECT_TRUE(dispatcher.waitForThreads(1, 512));
- auto thread2 = vespalib::Thread::start(fetcher2, fetcher2_thread);
+ auto thread2 = vespalib::thread::start(fetcher2, fetcher2_thread);
EXPECT_TRUE(dispatcher.waitForThreads(2, 512));
EXPECT_EQUAL(-1, dropped.value);
EXPECT_EQUAL(-1, handler1.value);
diff --git a/vbench/src/vbench/core/handler_thread.h b/vbench/src/vbench/core/handler_thread.h
index 8ece1389dfc..81a0a720720 100644
--- a/vbench/src/vbench/core/handler_thread.h
+++ b/vbench/src/vbench/core/handler_thread.h
@@ -26,7 +26,7 @@ private:
std::condition_variable _cond;
vespalib::ArrayQueue<std::unique_ptr<T> > _queue;
Handler<T> &_next;
- vespalib::Thread _thread;
+ std::thread _thread;
bool _done;
void run() override;
diff --git a/vbench/src/vbench/core/handler_thread.hpp b/vbench/src/vbench/core/handler_thread.hpp
index 1a99861ea81..3373e196ab7 100644
--- a/vbench/src/vbench/core/handler_thread.hpp
+++ b/vbench/src/vbench/core/handler_thread.hpp
@@ -31,13 +31,15 @@ HandlerThread<T>::HandlerThread(Handler<T> &next, init_fun_t init_fun)
_thread(),
_done(false)
{
- _thread = vespalib::Thread::start(*this, init_fun);
+ _thread = vespalib::thread::start(*this, init_fun);
}
template <typename T>
HandlerThread<T>::~HandlerThread()
{
- join();
+ if (!_done) {
+ join();
+ }
assert(_queue.empty());
}
diff --git a/vbench/src/vbench/vbench/request_scheduler.cpp b/vbench/src/vbench/vbench/request_scheduler.cpp
index cde31ec07b8..136f2bed98b 100644
--- a/vbench/src/vbench/vbench/request_scheduler.cpp
+++ b/vbench/src/vbench/vbench/request_scheduler.cpp
@@ -71,7 +71,7 @@ void
RequestScheduler::start()
{
_timer.reset();
- _thread = vespalib::Thread::start(*this, vbench_request_scheduler_thread);
+ _thread = vespalib::thread::start(*this, vbench_request_scheduler_thread);
}
RequestScheduler &
diff --git a/vbench/src/vbench/vbench/request_scheduler.h b/vbench/src/vbench/vbench/request_scheduler.h
index b1d525eb691..1483a86a458 100644
--- a/vbench/src/vbench/vbench/request_scheduler.h
+++ b/vbench/src/vbench/vbench/request_scheduler.h
@@ -26,7 +26,7 @@ private:
TimeQueue<Request> _queue;
DroppedTagger _droppedTagger;
Dispatcher<Request> _dispatcher;
- vespalib::Thread _thread;
+ std::thread _thread;
HttpConnectionPool _connectionPool;
std::vector<Worker::UP> _workers;
std::mutex _lock;
diff --git a/vbench/src/vbench/vbench/vbench.cpp b/vbench/src/vbench/vbench/vbench.cpp
index 8a8bceccefb..58d0f9e0345 100644
--- a/vbench/src/vbench/vbench/vbench.cpp
+++ b/vbench/src/vbench/vbench/vbench.cpp
@@ -100,7 +100,7 @@ VBench::run()
{
_scheduler->start();
for (size_t i = 0; i < _inputs.size(); ++i) {
- _inputs[i]->thread = vespalib::Thread::start(*_inputs[i]->generator, vbench_inputchain_generator);
+ _inputs[i]->thread = vespalib::thread::start(*_inputs[i]->generator, vbench_inputchain_generator);
}
for (size_t i = 0; i < _inputs.size(); ++i) {
_inputs[i]->thread.join();
diff --git a/vbench/src/vbench/vbench/vbench.h b/vbench/src/vbench/vbench/vbench.h
index 2b7fcf0cd88..f355beddce5 100644
--- a/vbench/src/vbench/vbench/vbench.h
+++ b/vbench/src/vbench/vbench/vbench.h
@@ -26,7 +26,7 @@ private:
using UP = std::unique_ptr<InputChain>;
std::vector<Tagger::UP> taggers;
Generator::UP generator;
- vespalib::Thread thread;
+ std::thread thread;
};
NativeFactory _factory;
std::vector<Analyzer::UP> _analyzers;
diff --git a/vbench/src/vbench/vbench/worker.cpp b/vbench/src/vbench/vbench/worker.cpp
index eabd17ae73f..d9ba039eb53 100644
--- a/vbench/src/vbench/vbench/worker.cpp
+++ b/vbench/src/vbench/vbench/worker.cpp
@@ -30,7 +30,7 @@ Worker::Worker(Provider<Request> &provider, Handler<Request> &next,
_pool(pool),
_timer(timer)
{
- _thread = vespalib::Thread::start(*this, vbench_worker_thread);
+ _thread = vespalib::thread::start(*this, vbench_worker_thread);
}
} // namespace vbench
diff --git a/vbench/src/vbench/vbench/worker.h b/vbench/src/vbench/vbench/worker.h
index d2bcfae637b..9cd7b04fdfe 100644
--- a/vbench/src/vbench/vbench/worker.h
+++ b/vbench/src/vbench/vbench/worker.h
@@ -20,7 +20,7 @@ namespace vbench {
class Worker : public vespalib::Runnable
{
private:
- vespalib::Thread _thread;
+ std::thread _thread;
Provider<Request> &_provider;
Handler<Request> &_next;
HttpConnectionPool &_pool;