acquire method

Future<void> acquire()

Implementation

Future<void> acquire() async {
  _log.finest('Semaphore.acquire: Attempting to acquire. Current: $_current, Max: $_maxConcurrency, Queue: ${_queue.length}');
  if (_current < _maxConcurrency) {
    _current++;
    _log.finest('Semaphore.acquire: Acquired immediately. Current: $_current');
    return Future.value();
  }
  final completer = Completer<void>();
  _queue.add(completer);
  _log.finest('Semaphore.acquire: Queued. Current: $_current, Queue: ${_queue.length}');
  return completer.future;
}