/
githubmirror
/
yuzu
Обзор
Документация
Войти
/
githubmirror
/
yuzu
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/common/spin_lock.cpp
53 строки
857 B
Morph
general: Convert source file copyright comments over to SPDX
23 апр 2022, 12:55
23 апр 2022, 12:55
99ceb03
Код
Авторство
О чём код?
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #include "common/spin_lock.h" #if _MSC_VER #include <intrin.h> #if _M_AMD64 #define __x86_64__ 1 #endif #if _M_ARM64 #define __aarch64__ 1 #endif #else #if __x86_64__ #include <xmmintrin.h> #endif #endif namespace { void ThreadPause() { #if __x86_64__ _mm_pause(); #elif __aarch64__ && _MSC_VER __yield(); #elif __aarch64__ asm("yield"); #endif } } // Anonymous namespace namespace Common { void SpinLock::lock() { while (lck.test_and_set(std::memory_order_acquire)) { ThreadPause(); } } void SpinLock::unlock() { lck.clear(std::memory_order_release); } bool SpinLock::try_lock() { if (lck.test_and_set(std::memory_order_acquire)) { return false; } return true; } } // namespace Common