Initial code commit
Use RAII instead of closure to access data
Renamed SpinLock to Spinlock