blob: ed401c1ca328dd9942b87ca08f4fdd8a845404fa [file] [log] [blame]
// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
// @dart = 2.9
library timer_multiple_isolates_test;
import 'dart:isolate';
import 'dart:async';
child(msg) {
var i = msg[0];
var responsePort = msg[1];
print("Starting child $i");
// Keep this isolate running to prevent its shutdown from touching the event
// handler.
new RawReceivePort();
// Try to get separate wakeups for each isolate.
new Timer(new Duration(milliseconds: 100 * (i + 1)), () {
print("Timer fired $i");
responsePort.send(null);
});
}
main() {
var port;
var replies = 0;
var n = 3;
port = new RawReceivePort((reply) {
replies++;
print("Got reply $replies");
if (replies == n) {
print("Done");
port.close();
}
});
for (var i = 0; i < n; i++) {
Isolate.spawn(child, [i, port.sendPort]);
}
}