// Copyright 2023 Dolphin Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include #include "Core/Core.h" // The Core only supports using a single Host thread. // If multiple threads want to call host functions then they need to queue // sequentially for access. struct HostThreadLock { static std::mutex s_host_identity_mutex; std::unique_lock m_lock; explicit HostThreadLock() : m_lock(s_host_identity_mutex) { Core::DeclareAsHostThread(); } HostThreadLock(const HostThreadLock& other) = delete; HostThreadLock(HostThreadLock&& other) = delete; HostThreadLock& operator=(const HostThreadLock& other) = delete; HostThreadLock& operator=(HostThreadLock&& other) = delete; ~HostThreadLock() { Core::UndeclareAsHostThread(); } };