Add cacheline-padded spinlock; use it in semaphore