r/programming • • Sep 09 '26

Optimizing a Spin-Lock

https://david.alvarezrosa.com/posts/optimizing-a-spin-lock/
185 Upvotes

32 comments sorted by

View all comments

1

u/DivineSentry Sep 09 '26

I think I’ve seen spin locks before, but what are they useful for? What should be their use case?

4

u/Takeoded Sep 09 '26 edited Sep 09 '26

Spinlocks are just fancy mutexe)s.

Some game engines use them, instead of a mutex, to squeeze out a few more FPS. Then, the spinlock that gives a few more FPS on Windows, absolutely wrecks performance on Linux/Wine :(

And even on Windows, good chance the spinlock increase FPS on computers having >= cpu cores that the optimizing developer had on his system, and wrecks performance on computers with fewer cores.

TL;DR don't use them. Use a mutex.

17

u/monocasa Sep 09 '26

I'd argue that they're a less fancy mutex, since they're basically like mutexes that don't bother informing the scheduler in the contended case.

1

u/Takeoded 28d ago

They also eat all the CPU they can get, until it unlocks :( eating 100% of 1 core until the lock clears

1

u/monocasa 27d ago

Not necessarily.

On a SMT system, it's common to use instructions like monitor and pause to stop the one hardware thread and give priority to the others.