如何在不引用SendPort的情况下防止Flutter中跨多个Isolate并发执行代码块?

问题描述 投票:0回答:1

在我的 Flutter 应用程序中,我们有应用程序的主隔离区以及由 Flutter

workmanager
插件 创建的另一个隔离区 - 因此我无法将 SendPort 实例共享给新隔离区。由于后台工作程序可以(几乎)随时运行,因此未定义主隔离和后台隔离的生成顺序。

在我们的主应用程序和后台工作程序中,我们执行非线程安全操作,例如刷新身份验证令牌,因此我们需要确保一次有一个隔离执行该工作。

是否有类似命名互斥体的东西,可以在隔离之间共享锁定机制,除了名称等常量(如字符串或类似的)之外,无需任何引用?

我已经尝试过使用

IsolateNameServer
,但在那里你只能创建单向通信,我也不知道这对我们有什么帮助。

flutter dart concurrency
1个回答
0
投票

您可以查看 https://pub.dev/packages/shared_map 来协调更新。

© www.soinside.com 2019 - 2024. All rights reserved.