locks with timeout support