/async_pool

A future and isolate thread pool project

Primary LanguageDartBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

async_pool pub package

A future and async thread pool project.has a syntax similar to CompletableFuture in java

CompletableFuture

List<CompletableFuture> fs = List.generate(1000, (index) => index).map((e) => CompletableFuture.runAsync(() async{
    await Future.delayed(Duration(milliseconds: 100));
    print('$e:${DateTime.now()} ');
    return e;
  })).toList();

  /// wait for the completion of all futures
  await CompletableFuture.join(fs);
  print(fs.map((e) => e.result).length);

CompletableIsolate

/// isolate pool test
Future<void> isolateTest() async {
  IsolateExecutor isolateExecutor = IsolateExecutor(maximumPoolSize: Platform.numberOfProcessors, keepActiveTime: 1);
  List<CompletableIsolate> list =
  List.generate(1000, (index) => index).map((index) => CompletableIsolate.runAsync(test, index, isolateExecutor: isolateExecutor)).toList();
  // for (var value in list) {
  //   value.cancel();
  // }
  await CompletableIsolate.join(list);
  print(list.map((e) => e.result).where((element) => element != null).length);
}

Future<String> test(int index) async {
  await Future.delayed(Duration(milliseconds: 100));
  String p = '$index ${DateTime.now()}';
  print(p);
  return p;
}