Finished water for real this time

This commit is contained in:
Dynamitos
2024-08-30 09:29:41 +02:00
parent 0be1a3cbde
commit 88eacd067e
8 changed files with 61 additions and 21 deletions
+15 -1
View File
@@ -54,11 +54,25 @@ void ThreadPool::runAsync(std::function<void()> func) {
queueCV.notify_one();
}
void ThreadPool::waitIdle() {
std::unique_lock l(queueLock);
while (numWaiting < workers.size())
{
idleCV.wait(l);
}
}
void ThreadPool::work() {
while (running) {
std::unique_lock l(queueLock);
while (queue.empty()) {
numWaiting++;
if (numWaiting == workers.size())
{
idleCV.notify_all();
}
queueCV.wait(l);
numWaiting--;
if (!running) {
return;
}
@@ -72,7 +86,7 @@ void ThreadPool::work() {
std::unique_lock t(taskLock);
entry.task->numRemaining--;
if (entry.task->numRemaining == 0) {
completedCV.notify_one();
completedCV.notify_all();
}
}
}