summaryrefslogtreecommitdiffstats
path: root/src/common/thread.h
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2020-08-26 03:41:46 +0200
committerReinUsesLisp <reinuseslisp@airmail.cc>2020-08-26 04:50:51 +0200
commitf119ef798b9d6d5bac78148472e783428f27447a (patch)
tree0f8097367f0f7a733f6d140bc611742c577d11e7 /src/common/thread.h
parentMerge pull request #4572 from lioncash/xbyak (diff)
downloadyuzu-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 'src/common/thread.h')
-rw-r--r--src/common/thread.h9
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 {