Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import "dart:isolate";
- import "dart:async";
- abstract class Worker<I, O> {
- final I input;
- Worker(this.input);
- O doWork();
- void run(SendPort port) {
- new Future.value(doWork()).then((value) {
- port.send(value);
- });
- }
- Future<O> spawn() {
- var receiver = new ReceivePort();
- return Isolate.spawn(doStuff, new WorkerMessage(this, receiver.sendPort)).then((isolate) {
- return receiver.first;
- }).then((value) {
- receiver.close();
- return value;
- });
- }
- }
- class WorkerMessage {
- final Worker worker;
- final SendPort sendPort;
- WorkerMessage(this.worker, this.sendPort);
- void doWork() {
- worker.run(sendPort);
- }
- }
- doStuff(WorkerMessage message) {
- message.doWork();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement