use std::atomic instead of boost::atomic