【问题标题】:Distributed message passing in D?D 中的分布式消息传递?
【发布时间】:2010-08-12 20:25:55
【问题描述】:

我真的很喜欢 D 实现的消息传递原语。不过,我只看到了程序中传递消息的示例。是否支持通过例如分发消息?网络?

【问题讨论】:

    标签: network-programming d


    【解决方案1】:

    消息传递函数在 std.concurrency 中,它只处理线程。因此,用于在线程之间传递消息的消息传递类型仅适用于线程。 Phobos 中没有 RMI 或类似的东西。这并不是说我们永远不会在 Phobos 中获得类似的东西(一直在向 Phobos 添加东西),但它现在不存在。

    然而,std.socket 模块处理与套接字的通信,这显然与网络相关。我自己没有使用过,但它看起来像发送和接收void[]。因此,它不像使用 std.concurrency 那样发送不可变对象那么好,但它确实允许您通过套接字进行网络通信,并且可能以比直接使用 C 调用更好的方式进行。

    【讨论】:

    • 目前 std.concurrency 只处理线程,但我的理解是,当 Sean 有时间时,他将实现交叉处理/网络共享。线程用于降低结构,而 Sean 只是没有时间完成它。
    • 太好了。如果这工作顺利,它确实是一个潜在的杀手级功能。我想知道序列化将如何工作......
    【解决方案2】:

    似乎已经考虑到这一点。来自Phobos documentation(通过 Jonathan M Davis 的答案找到)

    这是一个底层的消息传递 API 哪个更结构化或限制性更强 可以构建 API。总体思路是 每个可发送消息的实体都是 由通用句柄类型表示 (在此实现中称为 Cid), 允许将消息发送到 进程内线程,主机上的进程, 和外部主机进程使用 相同的界面。这是一个重要的 可扩展性方面,因为它 允许程序的组件 分布在可用资源中 与实际几乎没有变化 实施。

    目前,只有进程内线程 被更多人支持和引用 称为 Tid 的专用句柄。这是 实际上是 Cid 的一个子类,具有 特定于的附加功能 进程内消息传递。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-11
      • 1970-01-01
      • 2017-06-28
      • 2018-05-16
      • 1970-01-01
      相关资源
      最近更新 更多