Appearance
源码:labs/dart/host/bin/runtime_concurrency/event_loop_isolate_demo.dart
- 原始路径:
labs/dart/host/bin/runtime_concurrency/event_loop_isolate_demo.dart - 类型:
dart
dart
import 'dart:async';
import 'dart:isolate';
Future<void> main() async {
print('1. sync start');
scheduleMicrotask(() => print('2. microtask via scheduleMicrotask'));
Future.microtask(() => print('3. microtask via Future.microtask'));
Future(() => print('5. event queue future'));
final chained = Future(() {
print('4. future body before await continuation');
return 'future-result';
});
final futureResult = await chained;
print('6. await resumed with $futureResult');
final isolateResult = await Isolate.run(() => _countPrimesUnder(20000));
print('7. isolate result: $isolateResult primes below 20000');
print('8. sync end');
}
int _countPrimesUnder(int max) {
var count = 0;
for (var i = 2; i < max; i++) {
if (_isPrime(i)) {
count++;
}
}
return count;
}
bool _isPrime(int value) {
for (var i = 2; i * i <= value; i++) {
if (value % i == 0) {
return false;
}
}
return value > 1;
}