dart-sdk/tests/isolate/timer_multiple_isolates_test.dart
Ryan Macnak 60a7160273 Reapply "[vm] Prevent non-fatal errors from causing timers to be dropped."
Fix Linux event handler to re-arm the timer_fd after handling a wakeup.

R=zra@google.com

Review-Url: https://codereview.chromium.org/2996243003 .
2017-08-18 13:38:08 -07:00

43 lines
987 B
Dart

// 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];
var reponsePort = 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");
reponsePort.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]);
}
}