// 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. library timer_multiple_isolates_test; import 'dart:isolate'; import 'dart:async'; child(msg) { var i = msg[0] as int; 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]); } }