class Concurrent::MutexSemaphore

def acquire(permits = 1)

@!macro semaphore_method_acquire
def acquire(permits = 1)
  Utility::NativeInteger.ensure_integer_and_bounds permits
  Utility::NativeInteger.ensure_positive permits
  synchronize do
    try_acquire_timed(permits, nil)
  end
  return unless block_given?
  begin
    yield
  ensure
    release(permits)
  end
end