OLD | NEW |
(Empty) | |
| 1 import 'dart:async'; |
| 2 import 'dart:isolate'; |
| 3 |
| 4 enum Fisk { |
| 5 torsk, |
| 6 } |
| 7 |
| 8 isolate1(SendPort port) { |
| 9 port.send(Fisk.torsk); |
| 10 } |
| 11 |
| 12 isolate2(SendPort port) { |
| 13 port.send([Fisk.torsk]); |
| 14 } |
| 15 |
| 16 isolate3(SendPort port) { |
| 17 var x = new Map<int, Fisk>(); |
| 18 x[0] = Fisk.torsk; |
| 19 x[1] = Fisk.torsk; |
| 20 port.send(x); |
| 21 } |
| 22 |
| 23 main() async { |
| 24 var port = new ReceivePort(); |
| 25 await Isolate.spawn(isolate1, port.sendPort); |
| 26 Completer completer1 = new Completer(); |
| 27 port.listen((message) { |
| 28 print("Received $message"); |
| 29 port.close(); |
| 30 expectTorsk(message); |
| 31 completer1.complete(); |
| 32 }); |
| 33 await completer1.future; |
| 34 Completer completer2 = new Completer(); |
| 35 port = new ReceivePort(); |
| 36 await Isolate.spawn(isolate2, port.sendPort); |
| 37 port.listen((message) { |
| 38 print("Received $message"); |
| 39 port.close(); |
| 40 expectTorsk(message[0]); |
| 41 completer2.complete(); |
| 42 }); |
| 43 await completer2.future; |
| 44 port = new ReceivePort(); |
| 45 await Isolate.spawn(isolate3, port.sendPort); |
| 46 port.listen((message) { |
| 47 print("Received $message"); |
| 48 port.close(); |
| 49 expectTorsk(message[0]); |
| 50 expectTorsk(message[1]); |
| 51 }); |
| 52 } |
| 53 |
| 54 expectTorsk(Fisk fisk) { |
| 55 if (fisk != Fisk.torsk) { |
| 56 throw "$fisk isn't a ${Fisk.torsk}"; |
| 57 } |
| 58 } |
| 59 |
OLD | NEW |