https://medium.com/adamedelwiess/operating-system-20-introduction-to-synchronization-spinlock-implementation-and-spinlock-c926af1412e6