Effects: Calls try_lock() for each argument in order beginning with the
first until all arguments have been processed or a call to try_lock() fails,
either by returning false or by throwing an exception.
If a call to
try_lock() fails, unlock() is called for all prior arguments
with no further calls to try_lock().