concurrent_executor

Creator: coderz1093

Last updated:

0 purchases

concurrent_executor Image
concurrent_executor Images

Languages

Categories

Add to Cart

Description:

concurrent executor

A concurrent executor library for Dart developers.
Usage #
A simple usage example:
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<void> {
@override
void run() {
print('${Isolate.current.debugName}-executeFoo');
sleep(Duration(seconds: 1));
}
}

class Foo2 extends ConcurrentTask<int> {
@override
int run() {
print('${Isolate.current.debugName}-executeFoo2');
sleep(Duration(seconds: 1));
return 3;
}
}

class Foo3 extends ConcurrentTask<Future<int>> {
@override
Future<int> run() async {
print('${Isolate.current.debugName}-executeFoo3');
return await Future.value(9);
}
}

class Foo4 extends ConcurrentTask<int> {
Object? stat = 888;

@override
int run() {
print('${Isolate.current.debugName}-executeFoo4-$stat');
sleep(Duration(seconds: 1));
return 344;
}
}

class Foo5 extends ConcurrentTask<int> {
var stat = 85288;

@override
int run() {
print('${Isolate.current.debugName}-executeFoo5-$stat');
sleep(Duration(seconds: 1));
return stat;
}
}

class Foo6 extends ConcurrentTask<int> {
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');
}

copied to clipboard
Features and bugs #
Please file feature requests and bugs at the issue tracker.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.