summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2024-01-01 18:55:14 -0500
committerJonathan Bradley <jcb@pikum.xyz>2024-01-01 18:55:14 -0500
commit0b9c784570fe3660b238b537fa7ba7e5de8783aa (patch)
tree39b06e06c06842200014613e732788e3739561c4 /src
parent446094f608355bc351e8b0aad0223ba8081519dc (diff)
refactor ThreadRun for better pointer safety
Diffstat (limited to 'src')
-rw-r--r--src/thread_pool.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/thread_pool.cpp b/src/thread_pool.cpp
index 41aaf7d..050db20 100644
--- a/src/thread_pool.cpp
+++ b/src/thread_pool.cpp
@@ -29,9 +29,13 @@ void ThreadRun(ThreadPool *tp) {
{
std::unique_lock<std::mutex> lck(tp->mutex);
tp->condition.wait(lck, [tp] {
- return tp->jobQueue->Count() != 0 || !tp->isRunning || tp->isPaused;
+ if (!tp->isRunning) return true;
+ if (tp->isPaused) return true;
+ if (tp->jobQueue == nullptr) return true;
+ if (tp->jobQueue == CAFE_BABE(DynArray<std::packaged_task<void()> *>)) return true;
+ return tp->jobQueue->Count() != 0;
});
- if (!tp->isRunning || tp->isPaused) {
+ if (!tp->isRunning || tp->isPaused || tp->jobQueue == nullptr || tp->jobQueue == CAFE_BABE(DynArray<std::packaged_task<void()> *>)) {
return;
}
if (tp->jobQueue->Count() == 0) {