Revert "macOS: Replaced OSSpinLock with os_unfair_lock."

This reverts commit 9d282d7a8d.
os_unfair_lock requires macOS 10.12 or newer.
This commit is contained in:
Stefan Werner 2019-09-30 08:28:56 +02:00
parent 64c222ff58
commit 04133ee863
3 changed files with 10 additions and 10 deletions

View File

@ -30,7 +30,7 @@
#endif
#ifdef __APPLE__
# include <os/lock.h>
# include <libkern/OSAtomic.h>
#endif
#include "util/util_function.h"
@ -72,17 +72,17 @@ class thread_spin_lock {
#ifdef __APPLE__
inline thread_spin_lock()
{
spin_ = OS_UNFAIR_LOCK_INIT;
spin_ = OS_SPINLOCK_INIT;
}
inline void lock()
{
os_unfair_lock_lock(&spin_);
OSSpinLockLock(&spin_);
}
inline void unlock()
{
os_unfair_lock_unlock(&spin_);
OSSpinLockUnlock(&spin_);
}
#elif defined(_WIN32)
inline thread_spin_lock()
@ -128,7 +128,7 @@ class thread_spin_lock {
#endif
protected:
#ifdef __APPLE__
os_unfair_lock spin_;
OSSpinLock spin_;
#elif defined(_WIN32)
CRITICAL_SECTION cs_;
#else

View File

@ -30,7 +30,7 @@ extern "C" {
#include <pthread.h>
#ifdef __APPLE__
# include <os/lock.h>
# include <libkern/OSAtomic.h>
#endif
/* for tables, button in UI, etc */
@ -103,7 +103,7 @@ void BLI_mutex_unlock(ThreadMutex *mutex);
/* Spin Lock */
#if defined(__APPLE__)
typedef os_unfair_lock SpinLock;
typedef OSSpinLock SpinLock;
#elif defined(_MSC_VER)
typedef volatile int SpinLock;
#else

View File

@ -480,7 +480,7 @@ void BLI_mutex_free(ThreadMutex *mutex)
void BLI_spin_init(SpinLock *spin)
{
#if defined(__APPLE__)
*spin = OS_UNFAIR_LOCK_INIT;
*spin = OS_SPINLOCK_INIT;
#elif defined(_MSC_VER)
*spin = 0;
#else
@ -491,7 +491,7 @@ void BLI_spin_init(SpinLock *spin)
void BLI_spin_lock(SpinLock *spin)
{
#if defined(__APPLE__)
os_unfair_lock_lock(spin);
OSSpinLockLock(spin);
#elif defined(_MSC_VER)
while (InterlockedExchangeAcquire(spin, 1)) {
while (*spin) {
@ -507,7 +507,7 @@ void BLI_spin_lock(SpinLock *spin)
void BLI_spin_unlock(SpinLock *spin)
{
#if defined(__APPLE__)
os_unfair_lock_unlock(spin);
OSSpinLockUnlock(spin);
#elif defined(_MSC_VER)
_ReadWriteBarrier();
*spin = 0;