isoworker

Last updated:

0 purchases

isoworker Image
isoworker Images
Add to Cart

Description:

isoworker

isoworker #

English, 日本語
isoworker is a wrapping of the Isolate class to make it easier to write parallel processes.
Features #

Unlike Flutter's compute, it doesn't create an Isolate object at task execution time, but uses it instead, so it has less overhead.
Tasks can be pipelined with Future.

Usage #
import 'package:isoworker/isoworker.dart';

/// Method to be called when `IsoWorker` is initialized.
/// Provide a top-level or static method with `Stream<WorkerData>` as an argument.
void workerMethod(Stream<WorkerData> message) {
final _map = {
'key_1': 'val_1',
'key_2': 'val_2',
};
// Receive messages (WorkerData) to a worker
message.listen((data) {
// `WorkerData.value` to receive data from the `exec` runtime.
final command = data.value['command'];
switch (command) {
case 'get':
// Execute heavy processing, etc. and return the result as `WorkerData.callback`.
data.callback(_map[data.value['key']]);
break;
default:
// Be sure to call `callback` even if there is nothing there.
data.callback(null);
}
});
}

void main() async {
// Initialization
final worker = await IsoWorker.init(workerMethod);
// Execute the task
final res = await worker.exec({
'command': 'get',
'key': 'key_1',
});
print(res);
// Destroy the Worker
await worker.dispose();
}
copied to clipboard
Note #
If an Exception is thrown in the Worker method, all unexecuted tasks will be notified of the Exception.

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.