# concurrent_executor **Repository Path**: silentdoer/concurrent_executor ## Basic Information - **Project Name**: concurrent_executor - **Description**: No description available - **Primary Language**: Dart - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-03-11 - **Last Updated**: 2023-09-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README A concurrent executor library for Dart developers. ## Usage A simple usage example: ```dart import 'dart:io'; import 'dart:isolate'; import 'package:concurrent_executor/concurrent_executor.dart'; void main() async { var executor = await Executor.createExecutor(3); var foo = Foo(); executor.submit(foo).then((value) => value, onError: (e, s) { print(e); print(s); }); var res = executor.submit(foo); print(res); var foo2 = Foo2(); var res222 = executor.submit(foo2); print(await res222); var res22 = executor.submit(foo2); print(await res22); var foo3 = Foo3(); var res3 = executor.submit(foo3); print(res3); var res33 = executor.submit(foo3); print(res33); var foo33 = Foo3(); var res333 = executor.submit(foo33); print(await res333); var foo4 = Foo4(); foo4.stat = 'aaaaccc'; var res44 = executor.submit(foo4); print(res44); var foo44 = Foo4(); foo44.stat = 'vvvveee'; var res444 = executor.submit(foo44); print(await res444); var foo5 = Foo5(); foo5.stat = 99; var res5 = executor.submit(foo5); print(await res5); var foo6 = Foo6(); foo6.stat = 'kkkkttt'; var res6 = executor.submit(foo6); print(res6); // region pause var receivePort = ReceivePort(); await Isolate.spawn(pause, receivePort.sendPort); await for (var _ in receivePort) { break; } print('pause close'); receivePort.close(); // endregion //await executor.close(CloseLevel.immediately); //executor.close(CloseLevel.immediately); //await executor.close(CloseLevel.afterRunningFinished); // close default is afterRunningFinished await executor.close(); //await executor.close(CloseLevel.afterAllFinished); //executor.close(CloseLevel.afterAllFinished); print( 'the following ${executor.unfinishedTasks.length} tasks has not executed completely:'); print(executor.unfinishedTasks.map((e) => e.runtimeType)); } class Foo extends ConcurrentTask { @override void run() { print('${Isolate.current.debugName}-executeFoo'); sleep(Duration(seconds: 1)); } } class Foo2 extends ConcurrentTask { @override int run() { print('${Isolate.current.debugName}-executeFoo2'); sleep(Duration(seconds: 1)); return 3; } } class Foo3 extends ConcurrentTask> { @override Future run() async { print('${Isolate.current.debugName}-executeFoo3'); return await Future.value(9); } } class Foo4 extends ConcurrentTask { Object? stat = 888; @override int run() { print('${Isolate.current.debugName}-executeFoo4-$stat'); sleep(Duration(seconds: 1)); return 344; } } class Foo5 extends ConcurrentTask { var stat = 85288; @override int run() { print('${Isolate.current.debugName}-executeFoo5-$stat'); sleep(Duration(seconds: 1)); return stat; } } class Foo6 extends ConcurrentTask { String stat = ''; @override int run() { print('${Isolate.current.debugName}-executeFoo6-$stat'); sleep(Duration(seconds: 1)); return 6663; } } void pause(SendPort message) { sleep(Duration(seconds: 1)); message.send('close'); } ``` ## Features and bugs Please file feature requests and bugs at the [issue tracker][tracker]. [tracker]: https://github.com/Silentdoer/concurrent_executor/issues