fix: replaced manual .lock()/.unlock() calls with std::scoped_lock
This commit is contained in:
parent
622fc2cb40
commit
8eb5f3e3b8
|
|
@ -1,6 +1,7 @@
|
|||
#include "thread_pool.h"
|
||||
#include <algorithm>
|
||||
#include <thread>
|
||||
#include <utility>
|
||||
|
||||
namespace threading {
|
||||
ThreadPool::ThreadPool() {
|
||||
|
|
@ -12,11 +13,10 @@ ThreadPool::ThreadPool() {
|
|||
}
|
||||
|
||||
ThreadPool::~ThreadPool() {
|
||||
this->lock.lock();
|
||||
{ std::scoped_lock lock{ this->lock };
|
||||
this->shutdown = true;
|
||||
this->threadNotifier.notify_all();
|
||||
this->lock.unlock();
|
||||
|
||||
}
|
||||
for (std::thread &thread : this->threads) {
|
||||
thread.join();
|
||||
}
|
||||
|
|
@ -27,10 +27,9 @@ size_t ThreadPool::GetThreadCount() {
|
|||
}
|
||||
|
||||
void ThreadPool::ScheduleTask(TaskFunc fn) {
|
||||
this->lock.lock();
|
||||
std::scoped_lock lock{ this->lock };
|
||||
this->taskQueue.emplace(std::move(fn));
|
||||
this->threadNotifier.notify_one();
|
||||
this->lock.unlock();
|
||||
}
|
||||
|
||||
void ThreadPool::ThreadFn() {
|
||||
|
|
|
|||
Loading…
Reference in a new issue