acquire method
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;
}