entao_shared 0.0.1 copy "entao_shared: ^0.0.1" to clipboard
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));
  }
}
0
likes
140
points
100
downloads

Publisher

unverified uploader

Weekly Downloads

Share data between Isolates.

Repository

Documentation

API reference

License

MIT (license)

Dependencies

code_assets, data_assets, entao_lint, ffi, hooks, logging, native_toolchain_c, path

More

Packages that depend on entao_shared