acquire method

Future<void> acquire()

Acquire one permit, waiting in FIFO order if none are free.

Implementation

Future<void> acquire() {
  if (_permits > 0) {
    _permits--;
    return Future.value();
  }
  final c = Completer<void>();
  _queue.add(c);
  return c.future;
}