LetMutex and Crystal::SpinLock use the same API so use we can use them interchangeably especially in benchmarks.
Mutex#synchronize -> Mutex#sync.Mutex#unsync.#synchronize.Crystal::SpinLock is internal API. Anything inside the Crystal namespace except VERSION is internal and you shouldn't use it because it might be moved, changed or completely disappear.
SpinLock is appropriate. If not accepted they'll stay in concurrent.cr still using internal API's with me maintaining them.
Most helpful comment
Crystal::SpinLock is internal API. Anything inside the Crystal namespace except VERSION is internal and you shouldn't use it because it might be moved, changed or completely disappear.