mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 08:43:09 +00: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:
parent
dc3a5f791e
commit
a7381d5e81
1 changed files with 2 additions and 2 deletions
|
@ -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); }
|
||||
};
|
||||
|
|
Loading…
Add table
Reference in a new issue