locks with try-obtains