Merge pull request #10859 from liamwhite/no-more-atomic-wait

general: remove atomic signal and wait
This commit is contained in:
liamwhite
2023-06-23 09:27:14 -04:00
committed by GitHub
9 changed files with 26 additions and 40 deletions

View File

@ -105,14 +105,12 @@ void EmuThread::run() {
std::unique_lock lk{m_should_run_mutex};
if (m_should_run) {
m_system.Run();
m_is_running.store(true);
m_is_running.notify_all();
m_stopped.Reset();
Common::CondvarWait(m_should_run_cv, lk, stop_token, [&] { return !m_should_run; });
} else {
m_system.Pause();
m_is_running.store(false);
m_is_running.notify_all();
m_stopped.Set();
EmulationPaused(lk);
Common::CondvarWait(m_should_run_cv, lk, stop_token, [&] { return m_should_run; });

View File

@ -3,7 +3,6 @@
#pragma once
#include <atomic>
#include <condition_variable>
#include <cstddef>
#include <memory>
@ -88,7 +87,7 @@ public:
// Wait until paused, if pausing.
if (!should_run) {
m_is_running.wait(true);
m_stopped.Wait();
}
}
@ -97,7 +96,7 @@ public:
* @return True if the emulation thread is running, otherwise false
*/
bool IsRunning() const {
return m_is_running.load() || m_should_run;
return m_should_run;
}
/**
@ -118,7 +117,7 @@ private:
std::stop_source m_stop_source;
std::mutex m_should_run_mutex;
std::condition_variable_any m_should_run_cv;
std::atomic<bool> m_is_running{false};
Common::Event m_stopped;
bool m_should_run{true};
signals: