summaryrefslogtreecommitdiff
path: root/lib/worker.cpp
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2023-04-14 10:26:51 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2023-04-14 11:15:56 +0100
commit1cbf18ff8463946aa5a09ccf1d6873b222b912b6 (patch)
treeeb7921b1b2099a3d34928841734010d6e3f7701e /lib/worker.cpp
parentGlobal worker instance (diff)
downloadilt-1cbf18ff8463946aa5a09ccf1d6873b222b912b6.tar.bz2
ilt-1cbf18ff8463946aa5a09ccf1d6873b222b912b6.tar.xz
ilt-1cbf18ff8463946aa5a09ccf1d6873b222b912b6.zip
Simplify worker with jthread
Moves thread collection to bottom of class so threads are joined before job storage is destroyed.
Diffstat (limited to 'lib/worker.cpp')
-rw-r--r--lib/worker.cpp5
1 files changed, 1 insertions, 4 deletions
diff --git a/lib/worker.cpp b/lib/worker.cpp
index cf59f56..4f1352d 100644
--- a/lib/worker.cpp
+++ b/lib/worker.cpp
@@ -9,16 +9,13 @@ Worker Worker::instance;
Worker::Worker() : todoLen {0}
{
std::generate_n(std::back_inserter(threads), std::thread::hardware_concurrency(), [this]() {
- return std::thread {&Worker::worker, this};
+ return std::jthread {&Worker::worker, this};
});
}
Worker::~Worker()
{
todoLen.release(std::thread::hardware_concurrency());
- std::for_each(threads.begin(), threads.end(), [](auto & th) {
- th.join();
- });
}
void