Reentrant typical lock.
Optimized lock that cannot be called inside another lock, don't keep the current thread id, or a list of threads to awake It is lightweight and just requires an atomic. Does busy-waiting instead of sleeping the thread.