diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2024-01-01 18:55:14 -0500 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2024-01-01 18:55:14 -0500 |
| commit | 0b9c784570fe3660b238b537fa7ba7e5de8783aa (patch) | |
| tree | 39b06e06c06842200014613e732788e3739561c4 /src | |
| parent | 446094f608355bc351e8b0aad0223ba8081519dc (diff) | |
refactor ThreadRun for better pointer safety
Diffstat (limited to 'src')
| -rw-r--r-- | src/thread_pool.cpp | 8 |
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) { |
