Remove spin_lock and use atomic class.
use std::move instead boost::move.