mirror of
https://github.com/HChaZZY/Stockfish.git
synced 2025-12-20 17:16:33 +08:00
Fully yielding locks, no spinning
7 threads: ELO: 2.00 +-2.7 (95%) LOS: 92.4% Total: 20000 W: 3276 L: 3161 D: 13563 There is no functional change in single thread mode Resolves #304
This commit is contained in:
@@ -48,8 +48,8 @@ public:
|
||||
Spinlock() { lock = 1; } // Init here to workaround a bug with MSVC 2013
|
||||
void acquire() {
|
||||
while (lock.fetch_sub(1, std::memory_order_acquire) != 1)
|
||||
for (int cnt = 0; lock.load(std::memory_order_relaxed) <= 0; ++cnt)
|
||||
if (cnt >= 10000) std::this_thread::yield(); // Be nice to hyperthreading
|
||||
while (lock.load(std::memory_order_relaxed) <= 0)
|
||||
std::this_thread::yield(); // Be nice to hyperthreading
|
||||
}
|
||||
void release() { lock.store(1, std::memory_order_release); }
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user