use try_lock
use raw vec and atomic operations