diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2020-08-26 03:41:46 +0200 |
---|---|---|
committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2020-08-26 04:50:51 +0200 |
commit | f119ef798b9d6d5bac78148472e783428f27447a (patch) | |
tree | 0f8097367f0f7a733f6d140bc611742c577d11e7 /src/common/thread.h | |
parent | Merge pull request #4572 from lioncash/xbyak (diff) | |
download | yuzu-f119ef798b9d6d5bac78148472e783428f27447a.tar yuzu-f119ef798b9d6d5bac78148472e783428f27447a.tar.gz yuzu-f119ef798b9d6d5bac78148472e783428f27447a.tar.bz2 yuzu-f119ef798b9d6d5bac78148472e783428f27447a.tar.lz yuzu-f119ef798b9d6d5bac78148472e783428f27447a.tar.xz yuzu-f119ef798b9d6d5bac78148472e783428f27447a.tar.zst yuzu-f119ef798b9d6d5bac78148472e783428f27447a.zip |
Diffstat (limited to '')
-rw-r--r-- | src/common/thread.h | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/common/thread.h b/src/common/thread.h index 52b359413..a8c17c71a 100644 --- a/src/common/thread.h +++ b/src/common/thread.h @@ -4,6 +4,7 @@ #pragma once +#include <atomic> #include <chrono> #include <condition_variable> #include <cstddef> @@ -25,13 +26,13 @@ public: void Wait() { std::unique_lock lk{mutex}; - condvar.wait(lk, [&] { return is_set; }); + condvar.wait(lk, [&] { return is_set.load(); }); is_set = false; } bool WaitFor(const std::chrono::nanoseconds& time) { std::unique_lock lk{mutex}; - if (!condvar.wait_for(lk, time, [this] { return is_set; })) + if (!condvar.wait_for(lk, time, [this] { return is_set.load(); })) return false; is_set = false; return true; @@ -40,7 +41,7 @@ public: template <class Clock, class Duration> bool WaitUntil(const std::chrono::time_point<Clock, Duration>& time) { std::unique_lock lk{mutex}; - if (!condvar.wait_until(lk, time, [this] { return is_set; })) + if (!condvar.wait_until(lk, time, [this] { return is_set.load(); })) return false; is_set = false; return true; @@ -54,9 +55,9 @@ public: } private: - bool is_set = false; std::condition_variable condvar; std::mutex mutex; + std::atomic_bool is_set{false}; }; class Barrier { |