use try_to_lock