add spinlock
add spinlock