entao_shared 0.0.1
entao_shared: ^0.0.1 copied to clipboard
Share data between Isolates.
example/main.dart
import 'dart:isolate';
import 'package:entao_shared/entao_shared.dart';
// import 'gen/assets.dart';
// ignore: non_constant_identifier_names
void main() async {
print("");
// print(Shared.callCount());
// print(Shared.callCount());
// print(Shared.callCount());
// print(Shared.isFirstCall());
// print(Shared.isFirstCall());
// print(Shared.isFirstCall());
// Shared.putValue("a", "AA");
// Shared.putValue("b", "BB");
// Shared.putValue("c", "CC");
// print("contains(a)? ${Shared.containsKey("a")}");
// print("a? ${Shared.getValue("a")}");
// String? v = Shared.deleteValue("a");
// print("del a: $v");
// print("a? ${Shared.getValue("a")}");
Shared.putString("name", "entao");
// Isolate.run(task3, debugName: "A");
// Isolate.run(task3, debugName: "B");
// Isolate.run(task3, debugName: "C");
// Isolate.run(task3, debugName: "D");
Isolate.spawn(task3, "hello", debugName: "A");
Isolate.spawn(task3, "hello", debugName: "B");
Isolate.spawn(task3, "hello", debugName: "C");
Isolate.spawn(task3, "hello", debugName: "D");
await Future.delayed(Duration(seconds: 9));
}
Future<void> task3(String ss) async {
print('first? ${Shared.firstAccess}');
await Shared.waitOwner(Isolate.current.debugName!, () async {
for (int i = 0; i < 5; ++i) {
// if (Isolate.current.debugName == "B") {
await Future.delayed(Duration(milliseconds: 100));
// }
String? v = Shared.getString("name");
Shared.putString("name", "${Isolate.current.debugName} $v$i");
String? r = Shared.getString("name");
print(r);
}
}, timeout: null);
}
Future<void> task2() async {
print('first? ${Shared.firstAccess}');
for (int i = 0; i < 5; ++i) {
String? s = Shared.lock(() {
String? v = Shared.getString("name");
Shared.putString("name", "${Isolate.current.debugName} $v$i");
return Shared.getString("name");
});
print("$s");
}
}
Future<void> task() async {
for (int i = 0; i < 2; ++i) {
print("$i ${Isolate.current.debugName}");
await Future.delayed(Duration(milliseconds: 100));
}
}