From 338f53fbe0bf10d11259578e2baef7f73539821e Mon Sep 17 00:00:00 2001 From: colin <124654806@qq.com> Date: Thu, 1 Jul 2021 19:29:48 +0800 Subject: [PATCH] use _mm_pause (#1433) --- skynet-src/spinlock.h | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/skynet-src/spinlock.h b/skynet-src/spinlock.h index 04668082..7726904d 100644 --- a/skynet-src/spinlock.h +++ b/skynet-src/spinlock.h @@ -53,7 +53,8 @@ spinlock_destroy(struct spinlock *lock) { #define atomic_load_relaxed_(ptr) atomic_load_explicit(ptr, memory_order_relaxed) #if defined(__x86_64__) -#define atomic_pause_() __builtin_ia32_pause() +#include // For _mm_pause +#define atomic_pause_() _mm_pause() #else #define atomic_pause_() ((void)0) #endif @@ -70,10 +71,10 @@ spinlock_init(struct spinlock *lock) { static inline void spinlock_lock(struct spinlock *lock) { for (;;) { - if (!atomic_test_and_set_(&lock->lock)) - return; - while (atomic_load_relaxed_(&lock->lock)) - atomic_pause_(); + if (!atomic_test_and_set_(&lock->lock)) + return; + while (atomic_load_relaxed_(&lock->lock)) + atomic_pause_(); } }