f_limit 1.2.0 copy "f_limit: ^1.2.0" to clipboard
f_limit: ^1.2.0 copied to clipboard

A Dart concurrency limiter for controlling async operations.

🚦 f_limit #

pub package License: MIT

Dart concurrency limiter for async operations.

δΈ­ζ–‡ζ–‡ζ‘£


πŸ“¦ Install #

dependencies:
  f_limit: ^1.0.0
dart pub get

⚑ Quick Start #

import 'package:f_limit/f_limit.dart';

void main() async {
  final limit = fLimit(2); // Max 2 concurrent operations

  final tasks = List.generate(5, (i) => () async {
    await Future.delayed(Duration(seconds: 1));
    return i;
  });

  final results = await Future.wait(tasks.map((task) => limit(task)));
  print('Done: $results');
}

πŸ“‹ Queue Strategies #

Strategy Description Use Case
fifo First In, First Out Default, fair execution
lifo Last In, First Out Stack-like, newest first
priority Priority-based Important tasks first
alternating Head β†’ Tail β†’ Head... Two-way fair scheduling
random Random selection Load balancing
final limit = fLimit(2, queueStrategy: QueueStrategy.priority);

πŸ“– API #

Constructor #

Method Description
fLimit(concurrency, {queueStrategy}) Create limiter

Properties #

Property Type Description
activeCount int Currently executing
pendingCount int In queue
concurrency int Max concurrent (get/set)
queueStrategy QueueStrategy Current strategy

Methods #

Method Description
call(fn, {priority}) Execute with limit
clearQueue() Clear pending tasks
isolate(fn, {priority}) Run in isolate
map(items, mapper) Concurrent mapping
onIdle Wait for completion

🎯 Examples #

Priority Queue #

final limit = fLimit(1, queueStrategy: QueueStrategy.priority);

limit(() => print('πŸ”΄ Critical'), priority: 10);
limit(() => print('🟑 Normal'), priority: 5);
limit(() => print('🟒 Background'), priority: 1);

// Output: πŸ”΄ 🟑 🟒

Dynamic Concurrency #

final limit = fLimit(1);

limit.concurrency = 5; // Increase at runtime
print('Max concurrent: ${limit.concurrency}');

Clear Queue #

final limit = fLimit(1);

// Add many tasks...
for (int i = 0; i < 100; i++) {
  limit(() async => i);
}

print('Pending: ${limit.pendingCount}'); // 99
limit.clearQueue();
print('Pending: ${limit.pendingCount}'); // 0

πŸ“„ License #

MIT Β© FlutterCandies

2
likes
160
points
35
downloads

Publisher

verified publisherfluttercandies.com

Weekly Downloads

A Dart concurrency limiter for controlling async operations.

Repository (GitHub)
View/report issues

Topics

#p-limit #future-queue #concurrency #queue #future

Documentation

API reference

License

ImageMIT (license)

More

Packages that depend on f_limit