【问题标题】:Dart Isolates accessing a shared object instanceDart 隔离访问共享对象实例
【发布时间】:2014-10-16 15:59:17
【问题描述】:

我目前正在使用隔离器将查询并行发送到数据库服务器。我有一个连接器对象来建立与数据库的连接,我想在所有隔离区共享它,因此我不必为每个隔离区创建单独的连接。

到目前为止,我似乎只能在隔离之间共享特殊的可序列化对象。我正在使用发送和接收端口进行消息传递。对于其他对象(例如我的连接器对象),dart-vm 会产生错误:

Illegal argument(s): Illegal argument in isolate message : (object extends NativeWrapper)

您知道在多个隔离之间共享通用对象实例的任何方法吗?还是我必须为每个隔离创建一个单独的实例?

谢谢!

佩德罗

【问题讨论】:

    标签: dart shared-memory dart-isolates


    【解决方案1】:

    来自 SendPort.send 方法代码文档

       * In the special circumstances when two isolates share the same code and are
       * running in the same process (e.g. isolates created via [Isolate.spawn]), it
       * is also possible to send object instances (which would be copied in the
       * process). This is currently only supported by the dartvm.  For now, the
       * dart2js compiler only supports the restricted messages described above.
    

    我假设也不支持作为本机对象包装器的对象。
    目前似乎唯一的方法是在每个隔离区中创建一个新连接。

    这些价​​值观一直在起作用

       * The content of [message] can be: primitive values (null, num, bool, double,
       * String), instances of [SendPort], and lists and maps whose elements are any
       * of these. List and maps are also allowed to be cyclic.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多